![]() |
AW: Kleine Verständnisfrage zu globalen Hooks
Ja FHook ist 0. Hab auch eben FHook extra mal initialisiert, weil ich das auch schon vermutet hatte. Aber das ändert leider nichts :(
|
AW: Kleine Verständnisfrage zu globalen Hooks
ich hab mir eben auch mal ein Testprojekt gebaut und es funktioniert ohne Fehlermeldungen etc.:
DLL:
Delphi-Quellcode:
Programm:
library msghookproj;
{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt- Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL. Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String- Informationen als PChar- oder ShortString-Parameter übergeben. } uses windows, SysUtils, Classes; {$R *.res} var FHook: Cardinal = 0; function MyHookProc(aCode: Integer; wparam: wparam; lparam: lparam): LRESULT; stdcall; begin if (FHook <> 0) then result := CallNextHookEx(FHook, aCode, wparam, lparam) else result := 0; end; procedure InstallHook(); stdcall; begin FHook := SetWindowsHookEx(WH_GETMESSAGE, MyHookProc, HInstance, 0); end; procedure UninstallHook(); stdcall; begin if FHook <> 0 then UnhookWindowsHookEx(FHook); end; exports MyHookProc, InstallHook, UninstallHook; begin end.
Delphi-Quellcode:
Funktioniert bei dir obiger Code ohne Fehler?
unit unMain;
interface uses Windows, Forms; type TForm2 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; function MyHookProc(aCode: Integer; wparam: wparam; lparam: lparam): LRESULT; stdcall; external 'msghookproj.dll'; procedure InstallHook(); stdcall; external 'msghookproj.dll'; procedure UninstallHook(); stdcall; external 'msghookproj.dll'; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.FormCreate(Sender: TObject); begin InstallHook(); end; procedure TForm2.FormDestroy(Sender: TObject); begin UninstallHook(); end; end. |
AW: Kleine Verständnisfrage zu globalen Hooks
Ja das klappt. Ich glaube es lag an ShareMem. Wenn man die Unit einbindet, dann gibts den Fehler. (Die borlndmm.dll ist wohl auch Bestandteil von ShareMem).
Danke schonmal euch beiden :) Wenn ich doch nicht weiter kommen sollte, melde ich mich wieder :-P |
AW: Kleine Verständnisfrage zu globalen Hooks
Zitat:
|
AW: Kleine Verständnisfrage zu globalen Hooks
achso, da war ich mir nicht mehr sicher :oops:
|
AW: Kleine Verständnisfrage zu globalen Hooks
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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