![]() |
variable in dll wird nicht "gespeichert"
Hallo,
ich versuche über eine procedure ein handle von meiner form an die dll zu schicken und dort eine variable zu setzten, die das handle enthält.
Delphi-Quellcode:
Wenn ich diese prozedur aufrufe und ihr ein handle über gebe, wird in der message, 2mal das eingegebene handel angezeigt -> ich vermute es ist angekommen und gesetzt.
.
. . var target_handle: THandle; . . . procedure SetHandle(target: THandle); stdcall; begin target_handle:=target; ShowMessage('handle set '+IntToStr(target)+' : '+IntToStr(target_handle)); end; . . . exports SetHandle; . . . Wenn ich jedoch nun folgende prozedur in der gleichen unit aufrufe
Delphi-Quellcode:
Dann gibt mir die message eine 0 zurück.
.
. . procedure SendName; begin ShowMessage(IntToStr(target_handle)); end; . . . Wo liegt hier der hund begraben ? warum "merkt" er sich target_handle nicht? MfG - Ghost007 |
Re: variable in dll wird nicht "gespeichert"
Wird diese DLL für einen globalen Hook verwendet?
|
Re: variable in dll wird nicht "gespeichert"
Ja
|
Re: variable in dll wird nicht "gespeichert"
|
Re: variable in dll wird nicht "gespeichert"
Zitat:
Du kannst da keine globalen Variablen verwenden. Abhilfe schaffen am einfachsten Memory Mapped Files. |
Re: variable in dll wird nicht "gespeichert"
ok ?! ^^ ezz bin ich noch verwirrter.
Was ist da die lösung? das, es quasi für jeden prozess die variable target_handle gibt hab ich nun verstanden, aber wie setz ich die in jeder "instanz" des hooks ? MfG - Ghost007 [EDIT] Memory mapped files o.O ? ^^ hab grad schonmal die forensuche bemüht. Aber da wird auch vergeblich nach einem tutorial gesucht. [/EDIT] |
Re: variable in dll wird nicht "gespeichert"
*PUSH*
|
Re: variable in dll wird nicht "gespeichert"
Du kannst eben nicht in jeder Instanz die Variable setzen.
MMFs werden eigentlich in jedem Beispiel für globale Hooks verwendet. Du brauchst -CreateFileMapping -MapViewOfFile und -UnMapViewofFile -CloseHandle |
Re: variable in dll wird nicht "gespeichert"
Liste der Anhänge anzeigen (Anzahl: 1)
jo, das Problem hatte ich auch mal.
Lösung: 1) Die Unit UnitWDBIPCDemoObj (Anhang) in die uses 2) In dieser Unit die Klasse TWDB_IPCDemoObj so verändern wie du willst (Felder usw einführen) 3) In deiner DLL:
Delphi-Quellcode:
4) Zum lesen/Schreiben der Daten:
var
oDemoObj: TWDB_IPCDemoObj;
Delphi-Quellcode:
Freigeben brauchst du nicht... kannst ja im UnInstallHook die Felder auf 0 setzen :stupid:
oDemoObj := TWDB_IPCDemoObj.Create('NameDesProgs');
showmessage(IntToStr(oDemoObj.MainHandle)); oDemoObj.meineVariable := 1234; |
Re: variable in dll wird nicht "gespeichert"
hey,
dominikkv das sieht sehr vielversprechend aus :) ich werd mir das mal anschaun und meld mich dann nochmal :) MfG - Ghost007 P.S. Dank :-D [EDIT] Funktioniert wunderbar :) danke danke danke [/EDIT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 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