Avatar billede semiprofkode Nybegynder
17. januar 2006 - 18:14 Der er 8 kommentarer

sende et andet tastetryk med en global hook/anden global løsning

hvordan sender jeg et andet tastetryk med en global hook?

Jeg kan læse hvad der trykkes, men i slutningen af hook'en returneres tastetrykket til systemet til udførelse, her vil jeg gerne sende et andet.

return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);

Hvordan gør jeg?
Avatar billede driis Nybegynder
17. januar 2006 - 22:05 #1
CallNextHookEx sender beskeden videre i beskedkøen, og den ender før eller senere hos den applikation, der rent faktisk behandler tastetrykket. Hvis du ændrer beskeden, burde den ændrede besked blive sendt videre.

Fra MSDN:
wParam
    [in] Specifies the virtual-key code of the key that generated the keystroke message.

Så hvis du lader wParam i dit kald til CallNextHookEx være virtual key code for det tastetryk, du vil sende, burde det virke.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/hookreference/hookfunctions/keyboardproc.asp
Avatar billede semiprofkode Nybegynder
18. januar 2006 - 15:06 #2
wParam er 256 ved pressed og 257 ved released, ligegyldig hvilken tast jeg trykker på. Så Msdn lyver. prøv selv.

Her ses hvordan tasten findes i den hook jeg arbejder med.

KeyboardHookStruct MyKeyboardHookStruct = (KeyboardHookStruct) Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct));
if ( KeyDown!=null && ( wParam ==WM_KEYDOWN || wParam==WM_SYSKEYDOWN ))
  {
  Keys keyData=(Keys)MyKeyboardHookStruct.vkCode;
......
Avatar billede semiprofkode Nybegynder
18. januar 2006 - 15:10 #3
Med andre ord, den findes i lParam
Avatar billede semiprofkode Nybegynder
18. januar 2006 - 15:21 #4
Men det efterlader stadig spørgsmålet ubesvaret.
Avatar billede semiprofkode Nybegynder
19. januar 2006 - 14:51 #5
wParam er altid 256 eller 257 hos mig, og kan derfor tilsyneladende ikke indeholde en keycode

Passer det vikelig ikke hvad er står i Msdn linket?
Avatar billede driis Nybegynder
19. januar 2006 - 18:11 #6
Du bruger WH_KEYBOARD_LL, linket passer til WH_KEYBOARD, ser jeg lige.

Nu har du virtual key code i MyKeyboardHookStruct.vkCode, denne kan du prøve at ændre (idet lParam er en pointer til den struktur der sendes videre i systemet).

Muligvis vil det være nødvendigt for dig at ændre scan code også, så de stemmer overens;  men umiddelbart ville jeg blot prøve at ændre vkCode for at se om det virker.
Avatar billede semiprofkode Nybegynder
20. januar 2006 - 09:05 #7
ok, prøvede at ændre vkCode, uden held. Hvad er scan code ?
Avatar billede semiprofkode Nybegynder
20. januar 2006 - 12:36 #8
og hvordan ændrer man den ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester