Uso la idea que tiraste y le agrego una HotKey para cerrar el script
Código: Seleccionar todo
HotKeyset("{esc}","_exit")
HotKeyset("!2","_hotmail")
while True
sleep(2000)
WEnd
func _exit()
Exit
EndFunc
Func _hotmail()
shellExecute("www.hotmail.com")
EndFunc
Fijate en la ayuda como se ponen las teclas especiales como Alt = ! control = ^ o shift = + , y tambien las teclas F1, F2, F3, etc. la tecla ESC o ENTER con "{}".
Esta manera es la mas practica ya que la funcion HotKeySet() detiene el script para ejecutar la funcion que se asigno a la funcion, podes poner un sleep de 100000000000000 igualmente la hotkey va a funcionar.
Otra manera de hacerlo que me parece que es mas especifica porque puede funcionar sobre cualquier programa(aveces en los juegos la funcion HotKeySet() no funciona) es usando en un bucle la funcion _IsPressed() que sirve para checkear si tal tecla del teclado esta siendo presionada o no, este usa el valor Hex de la tecla, en la ayuda de AutoIt sobre esta funcion tenes una lista con el valor de muchas de las teclas y en
MSDN tenes la lista completa. te dejo el mismo ejemplo usando _IsPressed().
Fijate que esta funcion la tenes que agregar incluyendo Misc.Au3
Tambien fijate que esta funcion te pone como parametro opcional la dll que usa, esta te conviene llamarla si esta funcion va a ser usada muchas veces, ya que sino la misma funcion lo hara cada vez que se ejecute y quiza consuma tiempo de script.
Código: Seleccionar todo
#include <Misc.au3>
$vDLL = DllOpen("user32.dll")
While True
If _IsPressed("1B", $vDLL) Then _exit(); tecla ESC
If _IsPressed("12", $vDLL) And _IsPressed("32", $vDLL) Then _hotmail(); tecla ALT y 2
Sleep(50)
WEnd
Func _exit()
DllClose($vDLL) ; acordate de cerrar la DLL
Exit
EndFunc ;==>_exit
Func _hotmail()
ShellExecute("www.hotmail.com")
EndFunc ;==>_hotmail