SwordMaster Geschrieben 23. Dezember 2005 Geschrieben 23. Dezember 2005 Hallo Leute, ich habe mir eine dll geschrieben wo ich per Message Hook auf Events von Fenstern aus einer anderen Anwendung reagiere. das ganze funktioniert auch schon ganz schön. jedoch habe ich jetzt folgendes problem: wenn ich in meiner dll eine globale Variable HWND handles = NULL; habe, und in diese Variable einen wert rein setze, dann kann ich in meiner "HookProc" auch ganz normal darauf zugreifen. wenn ich aber jetzt ein Array habe: HWND handles[1]; dann die werte in das Array schreibe, kann ich in der HookProc nicht mehr darauf zugreifen. bzw. es steht nicht der richtige wert drinnen. Meine Vermutung: Weil ein Array nur ein Zeiger ist, zeigt dieser Zeiger auf einem Speicherplatz in meinem Prozess. Aber in der HookProc bin ich nicht mehr in meinem Prozess sondern in dem Prozess des fremden Fensters. seh ich das richtig? Wenn ja: wie kann ich mein Problem vielleicht lösen? ich bräuchte ein Array weil ich mehr Werte Speichern will. Wenn nein: woran liegt es dann ;-). und wie kann ich auf die werte zugreifen?!. Hoffe jemand kann mir helfen! Danke SwordMaster Zitieren
Klotzkopp Geschrieben 23. Dezember 2005 Geschrieben 23. Dezember 2005 Meine Vermutung: Weil ein Array nur ein Zeiger ist, zeigt dieser Zeiger auf einem Speicherplatz in meinem Prozess.Ein Array ist kein Zeiger. Ein Array kann nur implizit in einen Zeiger auf das erste Element umgewandelt werden. Du hast auch kein wirkliches Array, jedenfalls passt nur ein Element rein. Eine globale Variable in einer DLL gibt es einmal für jeden Prozess, der die DLL lädt, es sei denn, du setzt sie explizit in die Shared-Section, siehe #pragma section. Zitieren
SwordMaster Geschrieben 23. Dezember 2005 Autor Geschrieben 23. Dezember 2005 hallo Danke für die schnelle Antwort, aber ich glaube das hilft mir nicht direkt weiter.... so definiere ich derzeit meine variablen: #pragma data_seg(".HOOKDATA") HHOOK hook = NULL; HWND handle = NULL; HWND handles[10]; #pragma data_seg() #pragma comment(linker, "/SECTION:.HOOKDATA,RWS") wenn ich jetzt etwas in die "handle" variable schreibe kann ich auch in der "HookProc" Funktion zugreifen (obwohl diese in einem anderen prozess aufgerufen wird). aber wenn ich etwas in das Array schreibe, dann kann ich nicht mehr darauf zugreifen. obwohl das Array ja auch in der #pragma section definiert wird?!? kannst du mir sagen was ich noch falsch mache? P.S. das ich im ersten thread ein array mit nur einem element hatte, war ein tippfehler. natürlich ist das array größer. aber so oder so. sobald ich werte in ein array schreibe (ob es jetzt größer als ein element ist oder nicht) kann ich nicht mehr darauf zugreifen . Zitieren
Guybrush Threepwood Geschrieben 23. Dezember 2005 Geschrieben 23. Dezember 2005 Hast du mal die Adressen der Variablen verglichen wenn du etwas reinschreibst und da wo du es wieder ausliest? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.