Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
22.05.2012, 14:57:05
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  WinAPI Forum
| | |-+  Windows-Tasten mit globalem Keyboard-Hook abfangen
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Windows-Tasten mit globalem Keyboard-Hook abfangen  (Gelesen 2353 mal)
Silberdrache
Gast
« am: 09.05.2002, 13:22:37 »

Hallo !

Hier ist der Code einer einfachen Library, die zum Aufbau eines globalen Keyhooks eingesetzt wird.

Code:

library Keyhook;



uses

  Windows;



var

  HookHandle: Cardinal = 0;

  WindowHandle: Cardinal = 0;



function KeyboardProc(nCode: Integer; wParam: LongInt; lParam: LongInt): LongInt; stdcall;

begin

  Result := CallNextHookEx(WH_KEYBOARD, ncode, wParam, lParam);

  if (nCode < 0) then Exit;

  if (HiByte(GetKeyState(VK_LWIN)) = 255) or (HiByte(GetKeyState(VK_RWIN)) = 255) then

  begin



// Was muss hier stehen ?



  end;

end;



procedure InstallHook(Hwnd: Cardinal); stdcall;

begin

  if (HookHandle = 0) then

  begin

    HookHandle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance, 0);

    WindowHandle := Hwnd;

  end;

end;



procedure UninstallHook; stdcall;

begin

  UnhookWindowsHookEx(HookHandle);

  HookHandle := 0;

end;



exports

  InstallHook, UninstallHook;



end.



Anstelle von "// Was muss hier stehen ?" brauche ich einen Code-Vorschlag, der entweder alle Messages der Windows Tastatur-Message-Queue löscht, oder nur die Windows-Keys irgendwie blockt, oder einen Vorschlag, wie es ganz anders als mit meinem Code-Beispiel gehen könnte. Ich wäre sehr dankbar für Eure Vorschläge.

Philipp
Gespeichert
Thomas Stutz
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1784



WWW
« Antworten #1 am: 09.05.2002, 13:30:02 »

Hi,

Verwende einen WH_GETMESSAGE  Hook anstatt WH_KEYBOARD.

Zitat
The WH_GETMESSAGE hook enables an application to monitor messages about to be returned by the GetMessage or PeekMessage function. You can use the WH_GETMESSAGE hook to monitor mouse and keyboard input and other messages posted to the message queue.


Ein Beispiel zum Deaktivieren der Windows Taste und
aller Tasten-Kombinationen mit der Windows Taste findest du unter:

[a href="http://www.datavis.ch/thomas/Downloads/Delphi/Eat%20Windows%20Keys.zip" target="_blank"]http://www.datavis.ch/thomas/Downloads/Del...dows%20Keys.zip[/a]

oder

[a href="http://www.datavis.ch/thomas/Downloads/Delphi/EatKey%20Example.zip" target="_blank"]http://www.datavis.ch/thomas/Downloads/Del...y%20Example.zip[/a]
(Mit Beispielprojekt)
Gespeichert

(¯`·._tom_.·´¯)

Tipp: Viele Antworten auf Fragen gibt's hier:
http://www.swissdelphicenter.ch/de/tipsuchen.php
Silberdrache
Gast
« Antworten #2 am: 09.05.2002, 18:39:01 »

Hallo,

es funktioniert einwandfrei. Danke Thomas :)

Philipp
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS