Alastor, nadie ignora tu programa. Te voy a decir más, es la mejor solución que he visto y la más lógica
. El único problema que puede tener acudir a esta función es que la tienes que estar llamando continuamente para que vea si pulsas las teclas....pero eso se soluciona muy facilmente, desde meterla en el bucle while...wend a llamarla desde un AdlibRegister.
Mmmmm....ya le habeis dado algunos buenos consejos. Muy bien
.
Yo voy a proponer una solución alternativa de las tantas que hay. Para que solo te afecten a tu ventana vamos a utilizar los mensajes de win que origina tu ventana. Vamos de caza de mensajes!!!!
.
Utilizaremos los mensajes que envia wm_keydown para saber que teclas has pulsado cuando tu ventana está activa. Pero esto tiene algunas limitaciones, asi que me apoyaré en los mensajes originador por wm_keyup y wm_command para completar el script.
Tranquilos, es más facil de lo que parece
. Mirar el script que esta bastante bien explicado:
Código: Seleccionar todo
#include <WindowsConstants.au3>
#include <Misc.au3>
Global $keyWin=0
$hGUI = GUICreate("Prueba", 300, 100)
GUIRegisterMsg($wm_keydown, "WM_keydown")
GUIRegisterMsg($wm_keyup, "WM_keyup")
GUIRegisterMsg($wm_command, "WM_command")
GUISetState()
while 1
Sleep(10)
WEnd
Func WM_keydown($hWnd, $iMsg, $iwParam, $ilParam)
If $iwparam=0x70 Then ayuda() ;si pulsas la tecla f1 ejecuta la función ayuda
If $iwparam=0x5b Then $KeyWin=1 ;si pulsas la tecla Win $KeyWin=1
EndFunc
Func WM_keyup($hWnd, $iMsg, $iwParam, $ilParam)
If $iwparam=0x5b Then $KeyWin=0 ;si dejas de pulsar la tecla Win $KeyWin=0
EndFunc
Func WM_command($hWnd, $iMsg, $iwParam, $ilParam)
If $KeyWin And $iwParam=2 Then salir() ;si la tecla de windows está siendo pulsada ($KeyWin=1) y al mismo tiempo pulsas la tecla ESC ejecuta salir.
EndFunc
Func ayuda()
MSGBox(0, "help!", "esta es la ayuda del soft")
ENDFUNC
Func salir()
MSGBox(0, "adios", "mundo")
Exit 0
ENDFUNC
Si no entendeis algo decirlo.
Hay otra forma (la perfecta
) de hacerlo, pero es con apis y es más complicada de hacer y de entender (si os animais os lo dejo a vosotros. Yo en su día ya me arté de hacer cosas con el teclado
....no teneis más que ver los post hechos por mi en el foro sobre este tema) . Para que os hagais una idea de por donde pueden ir los tiros podeis buscar en el foro la api getkeystate, la cual creo que implementé yo en su día (ya ni lo se seguro
) e hice muchos ejemplos con pulsaciones de teclado:
http://www.emesn.com/autoitforum/search ... etkeystate
Mirar también este. Os dejo el post con el código más interesante, pero os recomiendo que os leais todo el tema:
http://www.emesn.com/autoitforum/viewto ... tate#p3059
Mirar también el ejemplo en la ayuda de la función _WinAPI_SetWindowsHookEx.
Saludos.