![]() |
Anfängerfrage zu Hooks
Hallo ich habe eine kurze Frage zu Hooks:
Habe nach diesem Tut soweit alles fertig: ![]() Mein Hauptformular, in dem ich die DLL einbinde sieht so aus:
Code:
Frage: Wann und wo muss ich die Keyboardhookproc-Funktion ausführen? Diese sollte ich ja ausführen, um auf einen Tastendruck reagieren zu können..
begin
lib := LoadLibrary('blablabla\Keyboardhook.dll'); if lib <> INVALID_HANDLE_VALUE then begin InstallHook := GetProcAddress(lib, 'InstallHook'); UnInstallHook := GetProcAddress(lib, 'UninstallHook'); end; end. |
AW: Anfängerfrage zu Hooks
Ohne das jetzt näher angesehen zu haben, gehe ich davon aus, dass diese Funktion wohl über InstallHook übergeben und dann von Windows entsprechend aufgerufen wird, bis sie über UninstallHook wieder entfernt wird.
|
AW: Anfängerfrage zu Hooks
Code:
Die Showmessages werden bei mir nicht ausgeführt :/ ich dachte es liegt daran.. woran könnte es dann liegen?
function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM):
LRESULT; stdcall; begin showmessage('hi'); //es ist ebenfalls möglich die Bearbeitung an eine Bedingung zu knüpfen //it's possible to call CallNextHookEx conditional only. Result := CallNextHookEx(HookHandle, nCode, wParam, lParam); case nCode < 0 of TRUE: exit; //wenn code kleiner 0 wird nix gemacht FALSE: begin if lParam = VK_SPACE then begin showmessage('Space!'); end; end; end; end; |
AW: Anfängerfrage zu Hooks
Welchen Hook Typ verwendest du? Mit der nicht low-level Variante der Keyboard Hooks hatte ich auch schonmal Probleme. Läuft irgendeine Art von Sicherheits-Software?
Edit: Folgender Code funktioniert bei mir unter Windows 10 - 64 Bit (für
Delphi-Quellcode:
benötigt man sogar nichtmal eine Dll :)):
WH_KEYBOARD_LL
Delphi-Quellcode:
var
Hook: HHOOK; function TestHook(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall; begin Winapi.Windows.Beep(1000, 50); Result := CallNextHookEx(Hook, code, wparam, lparam); end; procedure TfrmMain.Button1Click(Sender: TObject); begin Hook := SetWindowsHookEx(WH_KEYBOARD_LL, TestHook, hInstance, 0); if (Hook = 0) then RaiseLastOSError; end; |
AW: Anfängerfrage zu Hooks
Zitat:
Nur was sagen die Malware, Virenscanner? gruss |
AW: Anfängerfrage zu Hooks
Zitat:
|
AW: Anfängerfrage zu Hooks
Eigentlich ist auf Assarbads bzw. Olivers Internetseite die Hookprogrammierung mit Delphi erschöpfend erklärt:
![]() Wundert mich, daß das hier noch niemand einwarf. Ich konnte mich da gut durcharbeiten, bei Fragen hilft Oliver auch gern weiter. Zitat:
|
AW: Anfängerfrage zu Hooks
Zitat:
ABER! Wenn man ein Programm mit diversen Hooks verkauft und anschließend den Aufschrei des Kunden miterleben muss ist das auch nicht gerade angenehm. Wollte das nur mal gefragt haben. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz