Globaler KeyboardHook zur kompletten Tastaturabfrage

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
orderinchaos
Beiträge: 49
Registriert: 20.06.2008 16:19

Beitrag von orderinchaos »

was hat denn CTRL + ALT GR etc.... mit den F-Tasten zu tun? versteh ich nicht ganz....

aber was mich noch mehr stört: Wieso geht bei dir das "!" und bei mir nicht? an was kann denn das liegen? Vielleicht doch am Tastatur-Layout.... auf welcher Taste ist bei dir denn das "!"? Bei mir obe rechts gleich neben der ENTER taste....

thx
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Bei mir obe rechts gleich neben der ENTER taste....
:shock: :lol:

das Ausrufungszeichen ist auf ner deutschen Tastatur Shift-1
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
orderinchaos
Beiträge: 49
Registriert: 20.06.2008 16:19

Beitrag von orderinchaos »

danke für die info :mrgreen:

wenn ich shift + 1 drücke, kommt bei mir nach wie vor nur eine eins (1)... ich bekomms einfach nicht hin, dass mir die sonderzeichen ausgegeben werden... weiss denn keiner einen rat?

am tastaturenlayout liegts ja anscheinend doch nicht.... :freak:
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

Code: Alles auswählen

Procedure.l myKeyboardHook(nCode, wParam, *p.KBDLLHOOKSTRUCT)
  Char.s  = Space(1)
  If nCode = #HC_ACTION
  
    Select wParam
      Case #WM_KEYUP
        Debug "#WM_KEYUP"
      Case #WM_SYSKEYUP
        Debug "#WM_SYSKEYUP"
      Case #WM_KEYDOWN 
        Debug "#WM_KEYDOWN "
      Case #WM_SYSKEYDOWN
        Debug "#WM_SYSKEYDOWN"
    EndSelect  
    
    If wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP Or wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN
     
      If GetAsyncKeyState_(#VK_ESCAPE)                                                ;Escape pressed
          UnhookWindowsHookEx_(hook)
          End
      EndIf
     
      
       GetKeyboardState_(@Array())

      If GetAsyncKeyState_(#VK_SHIFT) Or GetKeyState_($14) > 0
         Check.i=ToAsciiEx_(*p\vkCode,*p\scanCode.l,@dummy, @Char.s,0,GetKeyboardLayout_(0));
      Else
         Check.i=ToAsciiEx_(*p\vkCode,*p\scanCode.l,@array(), @Char.s,0,GetKeyboardLayout_(0));
      EndIf
         
      If Check.i
        Debug Char.s
      EndIf
        

    EndIf
    
  EndIf
  ProcedureReturn CallNextHookEx_(hook, nCode, wParam, *p)
EndProcedure 
Sonderzeichen die bemängelt wurden gehen jetzt..
funzt irgendwie noch nicht ganz (selbes problem wie vorhint tastendruck wird doppelt ausgegeben), aber für mehr habe ich jetzt keine zeit mehr. Muss noch Silvester vorbereiten.

Viel Spaß & guten rutsch
Marvin
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Ne. Ich meint bei den F-Tasten muss man nur deren VKK-Code abfragen (den bekommt mit mit umseitigem Code, wie schon gesagt). Aber für € und @ etc muss man Alt Gr abfragen bzw Alt+Strg.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Du prüfst bei wParam auf KEYUP und KEYDOWN! Wenn du eine Taste drückst, wird erst KEYDOWN gemeldet und nach dem Loslassen nochmal KEYUP. Du hookst pro Tastendruck ZWEI Events, also bekommst du auch zweimal ein 'a' beim Drücken der A-Taste.

Code: Alles auswählen

If wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN
Euch allen auch einen guten Rutsch!
Benutzeravatar
orderinchaos
Beiträge: 49
Registriert: 20.06.2008 16:19

Beitrag von orderinchaos »

thx euch allen !! funktioniert super.... ich habs hingekriegt, auch wenn noch nicht zu 100%.... :mrgreen:

euch allen ein riesen dank für eure mitarbeit und einen guten start ins 2009 !!

:allright: :allright:
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

@real
das ist ja gerade das problem hier.. wenn ich nicht alles übernehme nimmt er Tastenkombis für €,\,~ usw nicht an..

aber gut, orderinchaos scheints ja hinbekommen zu haben ^^
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Du hast Recht... Hab ihm nur erklären wollen, woran's lag, dass er immer zwei Antworten auf einen Tastendruck bekam.
Antworten