Avatar billede n1ghtmr Nybegynder
07. september 2005 - 11:28 Der er 1 kommentar og
1 løsning

Global Windows Hook

Hej alle.

Jeg er igang med at kode en keyboard hook i c#. Indtil videre kan jeg forhindre tastetryk "i at komme frem" og logge hvilke taster der bliver trykket på. Hvad jeg også gerne vil have er muligheden for at ændre tastetryk så f.eks. e bliver til f. Indtil videre har jeg:

//Start
//Sætter HOOK op i alle processor
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD_LL,
KeyboardHookProcedure,
Marshal.GetHINSTANCE(
Assembly.GetExecutingAssembly().GetModules()[0]),
0);

//og i Hookproc
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
KeyEventArgs e = null;
if ((nCode >= 0) && (KeyDown!=null || KeyUp!=null || KeyPress!=null))
{
KeyboardHookStruct MyKeyboardHookStruct = (KeyboardHookStruct) Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct));if ( KeyDown!=null && ( wParam ==WM_KEYDOWN ||wParam==WM_SYSKEYDOWN ))
{
Keys keyData=(Keys)MyKeyboardHookStruct.vkCode;
e = new KeyEventArgs(keyData);
KeyDown(this, e);
}

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

}

Jeg har prøvet at ændre lParam (da den indeholder den virtuelle kode) men uden held. Hvis jeg returnerer -1 bliver der ikke trykket på noget. En mulighed var at bruge SendKeys, men jeg vil helst holde mig til en global løsning.
Avatar billede n1ghtmr Nybegynder
12. september 2005 - 16:43 #1
Man kan bruge KEY_EVENT til det. Lukker.
Avatar billede semiprofkode Nybegynder
16. januar 2006 - 14:58 #2
Øhh jeg har samme spørgsmål som dig, men forstår ikke dit eget svar. KEY_EVENT ??
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