Laufzeitfehler beim laden einer hook-dll
-
hallo, ich habe mir meine hook-dll nach diesem beispiel
erfolgreich erstellt:http://www.c-plusplus.net/forum/viewtopic-var-t-is-39383.html
in meinem main-test-programm mache ich nun:
typedef BOOL (* PINSTALLHOOK) (HWND); typedef BOOL (* PUNINSTALLHOOK) (void); ... HINSTANCE hDll; PINSTALLHOOK pSetup; hDll = LoadLibrary("E:\\Hook.dll"); pSetup = (PINSTALLHOOK) GetProcAddress(hDll, "SetupHook"); pSetup(NULL);
der Laufzeitfehler tritt bei der Zeile pSetup auf.
wie bekomme ich in meinem main-test-programm nen handle auf mein fenster?
weil ich das ja pSetup übergeben muss!aber ich habe es auch schon mit einem handle eines anderen fensters
versucht hat aber leider nicht geklappt :-|warum entsteht dort der laufzeitfehler?
danke
-
Hoi,
Erstmal:
Ist ein 'Laufzeitfehler' für dich eine Speicherzugriffsverletzung (engl.: Access Violation)?babel schrieb:
in meinem main-test-programm mache ich nun:
D.h.: Du arbeitest in der Win32-Konsole ?
babel schrieb:
wie bekomme ich in meinem main-test-programm nen handle auf mein fenster?
Hm nun ja...also wenn du inner Win32-Konsole schriebst dann mit GetConsoleWindow() (-> MSDN-LINK)
Sonst befindet sich dieser ja im 1. Param. deiner WndProcbabel schrieb:
aber ich habe es auch schon mit einem handle eines anderen fensters
versucht hat aber leider nicht geklappt :-|lol, Wie willst du denn dann die WM_XXX Nachtichten prüfen/empfangen ?
Hast du mal alle Return-Werte (hDll, pSetup) geprüft ...ggf. mit GetLastError() ?
Hoffe das war hilfreich
-
ne also ich benutze als main-programm (ungücklich ausgedrückt sry)
eine WinApi-Andwendung.wie kann cih dort das fenster-handle bekommen? mit GetWindow(this); wie bei
MFC gehts leider net ^^der fehler liegt bei mir bei:
pSetup = (PINSTALLHOOK) GetProcAddress(hDll, "SetupHook");
pSetup ist immer NULL
geladen wird die DLL ohne Fehler!
nun frag ich mich natürlich warum GetProcAddress fehlschlägt!
nach "SetupHook" zu suchen ist doch richtig oder?hier nochmal der link zum code:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39383.htmldanke schonmal!
-
babel schrieb:
ne also ich benutze als main-programm (ungücklich ausgedrückt sry)
eine WinApi-Andwendung.wie kann cih dort das fenster-handle bekommen? mit GetWindow(this); wie bei
MFC gehts leider net ^^Naja wie ich schon sagte...der 1. Parameter deine WndProc
nach "SetupHook" zu suchen ist doch richtig oder?
jo,
hmm was sagt GetLastError() ?
PS: Pack die DLL mal ins gleiche Verzeichnis deiner EXE
-
Zur Not die DLL mal in Depends laden und sehen wie der Enty Point wirklich heißt. Evtl. heißt er ja "_SetupHook"!
-
Das Problem ist das CALLBACK beiu SetupHook und UninstallHook . Kannst du in diesem Fall einfach weglassen, dann wird es funktionieren.