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 Hook - doppelt ausgelöst? (https://www.delphipraxis.net/24387-hook-doppelt-ausgeloest.html)

czapie 20. Jun 2004 13:03


Hook - doppelt ausgelöst?
 
Hallo,

ich beschäftige mich zur Zeit mit Hooks und habe mir dazu Assarbads Tutorial angeschaut,
mich streng daran gehalten und ein Problem festgestellt.
Ich schicke das Ergebnis eines Tastaturhooks, also eine gedrückte Taste aus der dll an
ein Programm wo, diese Tase lediglich angezeigt wird. Jedoch nur wenn die Eingabe im
InternetExplorer erfolgte.
Nun habe ich festgestellt, dass scheinbar jeder Tastendruck zweimal "ausgelöst" wird.
So erscheint bei folgendem Quelltext der HookProc zweimal eine showmessage bei einem
Tastendruck:
Code:
function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
hHost, hIE : THandle;
begin
  case nCode < 0 of
    TRUE: exit;

    FALSE:
      begin
      hIE := GetForegroundWindow;
       if( hIE = FindWindow('IEFrame', nil)) then
       begin
         hHost := FindWindow(NIL, 'MeinProgramm');
         if hHost <> 0 then
         begin
            SendMessage(hHost, wm_KeyUp, wParam, 0);
            ShowMessage(chr(wParam));
         end;
       end;
      end;
  end;
  Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
end;
Woran kann das liegen?
Danke,
Czapie.

Meflin 20. Jun 2004 13:09

Re: Hook - doppelt ausgelöst?
 
ganz einfach: du kriegst eine keydown und eine keyup message (wenn mich nicht alles täuscht), also für jede taste zwei messages!

czapie 20. Jun 2004 13:20

Re: Hook - doppelt ausgelöst?
 
aha, und wie unterscheidet der Hook zwischen keyup und keydown?
Das kann doch nicht das gleiche sein?

Czapie.

czapie 20. Jun 2004 14:17

Re: Hook - doppelt ausgelöst?
 
Uuups

:oops: Sorry, das kommt davon, wenn man anfängt, länger pausiert und dann weitermacht.

Meflin 20. Jun 2004 14:39

Re: Hook - doppelt ausgelöst?
 
:-D alzheimer lässt grüßen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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