Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben
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.

Geschrieben

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 :(.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...