Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prob mit Tastatur Hook (https://www.delphipraxis.net/141888-prob-mit-tastatur-hook.html)

wayne312 18. Okt 2009 17:51


Prob mit Tastatur Hook
 
Hey leute,

ich versuche mich momentan an den Windows API Hooks. Das hab ich auch alles soweit verstanden nur mein tastatur hook macht irgentwie ein paar probleme..
also hier ma der Code für mein HookProc :

Delphi-Quellcode:
function MyKeyboardProc(nCode: integer; wparam: WPARAM; lParam: LPARAM):Integer; stdcall;
var
PKey : Integer;
begin
  Result:=CallNextHookEx(MyKeyboardHook,nCode,wParam,lParam);
  case nCode < 0 of
    True : exit;
    False :
      begin
        PKey:=wParam;
        case PKey of
          65 : List1.Append('a');
        end;
      end;
  end;
end;
Das funktioniert soweit auch ganz gut nur wenn ich jetz "a" drücke steht das dann gleich 4 mal in meiner List1 ....

Hab ich irgentwas falsch gemacht?

Danke

wicht 18. Okt 2009 18:26

Re: Prob mit Tastatur Hook
 
Geraten: wParam/lParam auswerten, weil die Funktion evtl. beim Drücken, Loslassen, sonstwas aufgerufen wird?

wayne312 18. Okt 2009 18:32

Re: Prob mit Tastatur Hook
 
danke für die antwort,

und wie kann ich feststellen ob die taste grade gedrückt bzw. losgelassen wurde?

Medium 18. Okt 2009 18:56

Re: Prob mit Tastatur Hook
 
Hier findest du eine komplette Aufschlüsselung der Parameter.

wayne312 18. Okt 2009 19:04

Re: Prob mit Tastatur Hook
 
Danke für den Link!

Hobby-Programmierer 19. Okt 2009 05:45

Re: Prob mit Tastatur Hook
 
Versuch mal
Delphi-Quellcode:
function MyKeyboardProc(nCode: integer; wparam: WPARAM; lParam: LPARAM):Integer; stdcall;
var
PKey : Integer;
begin
  Result:= CallNextHookEx(MyKeyboardHook,nCode,wParam,lParam);
  if nCode = HC_ACTION then
    case wParam of
      WM_KEYDOWN: begin
                    PKey:= wParam;
                    case PKey of
                      65 : List1.Append('a');
                    end;
                  end;
      WM_KEYUP : begin
                  end;
    end;
end;
[edit] schau dir bei Gelegenheit auch mal 'Ord' und 'Chr' in der OH an :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz