Hook-DLL: globale Variable wird NICHT von alles Funktionen erkannt/gelesen?!
-
hallo,
ich habe eine hook-dll nach folgendem beispiel:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39383.htmles klappt auch alles, allerdings habe ich ein problem:
ich erstelle eine globale variable:
char test[500];in der funktion
SetupHook(...)setze ich einen wert für diese variable
in der funktion
KeyboardHookProc(...)ist der wert dieser variable aber nicht verhanden

warum ist das so?? das ärgert mich^^
könnt ihr mir sagen warum das so ist und wie ich das problem lösen kann?
-
Du hast die Funktionsweise von Hooks noch nicht ganz verstanden. Die DLL hat in jedem Prozess ihren eigenen Satz Variablen. Du kannst die Variable höchstens in einem shared segment unterbringen um dies zu umgehen. Das macht das Hook Beispiel auch so.
MfG,
*Ranner*
-
achso, ok das erklärt schonmal einiges ja genau das ist halt mein problem!
ich habe nun folgendes gemacht:
#pragma data_seg ("Shared") HWND hWindow = 0 ; char test[500]; #pragma data_seg ()in der Funktion SetupHook(...); fülle ich diese "test[500]" aber in der funktion
KeyboardHookProc(...); ist der Inhalt trotzdem nicht da!!was mache ich falsch?
danke schonmal!!
-
Welchen Compiler hast du? Im Borland C++Builder z.B. geht das nämlich so nicht.
-
ich benutze Microsoft Visual C++ 6.0
wie würde es denn bei Borland gehen?
-
Mit FileMapping zum Beispiel. Aber beim VC++ 6.0 geht das auf jeden Fall. Das Problem ist also nicht der Compiler.
Zeig mal Code.
-
ja mein code ist EXACT dieser aus dem beispiel:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39383.htmlich habe nur 3 sachen geändert:
die variable "test" erstellt:#pragma data_seg ("Shared") HWND hWindow = 0 ; char datei[500]; #pragma data_seg ()in der Funktion SetupHook(...) setze ich einen wert für "test"
strcpy(test,"e:\\hallo.txt");in der Funktion KeyboardHookProc(...) möchte ich auf diesen wert zugreifen!
fopen_s(&stream,test,"a+");jedoch kann die datei in der Funktion KeyboardHookProc(...) nicht geöffnet werden!
-
Wieso nicht? Was gibt er als Fehler aus?
-
dat is auch alles keine gute idee, die keyboardproc wird doch in ganz unterschiedlichen prozessen aufgerufen wo das datei handle dann gar ned bekannt ist.
MfG,
*Ranner*
-
hmm!
mache ich das denn richtig? also müsste der inhalt der variable dann in allen
Funktionen vorhanden sein?@WebFritzi
die datei kann net geöffnet werden.
wenn ich den pfad der datei aber direkt in fopen() schreibe geht es!danke euch
-
Und wenn du test da definierst, wo du auch hWindow definierst...?
-
ja mache ich ja!
in der SetupHook(...);
-
Es wird wohl daran liegen, dass test ein Zeiger ist...
-
ahso...
und wie kann ich das problem lösen?
-
also das liegt daran das das ein zeiger ist?!