06/06/10 14:39
blasters
Postato originariamente da Il Totem:
Non è possibile implementare hotkeys direttamente dal framework, tranne nel caso una funzione sia legata ad un MenuStrip (in questa situazione, ogni elemento del MenuStrip dispone della proprietà ShortcutKey, che può legare una combinazione di tasti all'evento click di tale elemento).
Penso che la tua soluzione - l'uso di RegisterHotKey - sia una buona idea. keybd_event è una funzione di sistema della libreria user32.dll. Ecco una veloce spiegazione:
totem.altervista.org/appunti/…
Sarebbe la versione nativa del wrapper SendKeys.
P.S.: SendKeys dovrebbe funzionare comunque. Prova ad usare il metodo SendWait anziché Send.
Non è possibile implementare hotkeys direttamente dal framework, tranne nel caso una funzione sia legata ad un MenuStrip (in questa situazione, ogni elemento del MenuStrip dispone della proprietà ShortcutKey, che può legare una combinazione di tasti all'evento click di tale elemento).
Penso che la tua soluzione - l'uso di RegisterHotKey - sia una buona idea. keybd_event è una funzione di sistema della libreria user32.dll. Ecco una veloce spiegazione:
totem.altervista.org/appunti/…
Sarebbe la versione nativa del wrapper SendKeys.
P.S.: SendKeys dovrebbe funzionare comunque. Prova ad usare il metodo SendWait anziché Send.
Se ho capito bene devo usare invece di SendKeys.Send, SendKeys.SendWait vero?
Come hai detto ho provato ma se copio il programma su un altro pc non cambia nulla si blocca ugualmente.
--
Secondo me il programma si blocca perchè una volta intercettato il tasto lui lo "riclicca" e così si crea nuovamente il ciclo. Ma la cosa strana che non riesco a capire è perchè sul mio pc funziona bene poi appena lo sposto sul portatile non funziona più bene e si blocca
-------------
Ho risolto così
If hotKeyId = 1025 Then RichTextBox1.Text = RichTextBox1.Text & "a" UnregisterHotKey(Me.Handle, 1025) SendKeys.SendWait("a") RegisterHotKey(Me.Handle, 1025, 0, Keys.A) End If
Ultima modifica effettuata da blasters 06/06/10 17:52
aaa