AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

variable in dll wird nicht "gespeichert"

Ein Thema von ghost007 · begonnen am 19. Dez 2007 · letzter Beitrag vom 20. Dez 2007
Antwort Antwort
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#1

variable in dll wird nicht "gespeichert"

  Alt 19. Dez 2007, 20:28
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:
.
.
.
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 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.

Wenn ich jedoch nun folgende prozedur in der gleichen unit aufrufe
Delphi-Quellcode:
.
.
.
procedure SendName;
begin
 ShowMessage(IntToStr(target_handle));
end;
.
.
.
Dann gibt mir die message eine 0 zurück.
Wo liegt hier der hund begraben ? warum "merkt" er sich target_handle nicht?

MfG - Ghost007
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: variable in dll wird nicht "gespeichert"

  Alt 19. Dez 2007, 20:35
Wird diese DLL für einen globalen Hook verwendet?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#3

Re: variable in dll wird nicht "gespeichert"

  Alt 19. Dez 2007, 21:02
Ja
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: variable in dll wird nicht "gespeichert"

  Alt 19. Dez 2007, 21:40
Hi,

in diesem gab es ein ähnliches Problem.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: variable in dll wird nicht "gespeichert"

  Alt 19. Dez 2007, 21:47
Zitat von ghost007:
Ja
Dann ist genau das dein Problem.
Du kannst da keine globalen Variablen verwenden. Abhilfe schaffen am einfachsten Memory Mapped Files.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#6

Re: variable in dll wird nicht "gespeichert"

  Alt 19. Dez 2007, 21:50
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]
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#7

Re: variable in dll wird nicht "gespeichert"

  Alt 20. Dez 2007, 20:57
*PUSH*
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: variable in dll wird nicht "gespeichert"

  Alt 20. Dez 2007, 21:11
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
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#9

Re: variable in dll wird nicht "gespeichert"

  Alt 20. Dez 2007, 21:34
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:
var
  oDemoObj: TWDB_IPCDemoObj;
4) Zum lesen/Schreiben der Daten:
Delphi-Quellcode:
oDemoObj := TWDB_IPCDemoObj.Create('NameDesProgs');
showmessage(IntToStr(oDemoObj.MainHandle));
oDemoObj.meineVariable := 1234;
Freigeben brauchst du nicht... kannst ja im UnInstallHook die Felder auf 0 setzen
Angehängte Dateien
Dateityp: rar unitwdbipcobjects_124.rar (6,5 KB, 7x aufgerufen)
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#10

Re: variable in dll wird nicht "gespeichert"

  Alt 20. Dez 2007, 21:38
hey,

dominikkv das sieht sehr vielversprechend aus ich werd mir das mal anschaun und meld mich dann nochmal

MfG - Ghost007

P.S. Dank

[EDIT]
Funktioniert wunderbar danke danke danke
[/EDIT]
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz