Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Aus DLL auf Prgramm zugreifen (https://www.delphipraxis.net/28662-aus-dll-auf-prgramm-zugreifen.html)

F.W. 27. Aug 2004 15:55


Aus DLL auf Prgramm zugreifen
 
Ich brauche eure Hilfe! Ich habe schon die ganze DP durchsucht, aber nie die konkrete Antwort auf mein Problem:

Aus meiner Anwendung heraus wird eine procedure aufgerufen (aus einer DLL), die ein Formular erzeugt und es anzeigt, aber nicht ShowModal!
Die DLL wird dynamisch erzeugt und nach erfolgreichem Ausführen der "Startprocedure" in der DLL die Caption eines in der Anwendung vorkommenden Labels auf 'Gestartet' gesetzt.
Wenn das DLL-Formular geschlossen wird, soll es das irgendwie der Anwendung mitteilen oder direkt die Caption des Labels auf 'Geschlossen' setzen.

Ich hab's selbst schon mit der Übergabe von Pointer, dem label selbst... versucht, aber es hat nie geklappt!

Könnt ihr mir sagen, wie ich das machen kann?

nailor 27. Aug 2004 16:37

Re: Aus DLL auf Prgramm zugreifen
 
das sollte eigentlich so gehen... an sonsten mach es über eine windows-message, die zu abschluss gefeuert wird.

SleepyMaster 27. Aug 2004 16:45

Re: Aus DLL auf Prgramm zugreifen
 
Oder du machst einen Callback rein.

F.W. 28. Aug 2004 13:42

Re: Aus DLL auf Prgramm zugreifen
 
Könnt ihr mal n Beispiel geben? :shock:

nailor 28. Aug 2004 13:56

Re: Aus DLL auf Prgramm zugreifen
 
[delphi]//dll: ganz am ende:
SendMessage(Form2.Handle, succ(WM_USER), myDATA, myDATA);

// hauptprogramm: interface:
procedure myProc(var msg: TMessage); message succ(WM_USER);

// hauptprogramm: code:
procedure TForm2.myProc(var msg: TMessage);
begin
ShowMessage(inttostr(msg.LParam));
end;

Luckie 28. Aug 2004 14:03

Re: Aus DLL auf Prgramm zugreifen
 
Das funktioniert aber nur, wenn die DLL nur von einem Prozess benutzt wird. Ich würde mir mal das DLL Tutorial von Assarbad ankucken: http://www.luckie-online.de/Downloads/Importe/Assarbad/

nailor 28. Aug 2004 14:10

Re: Aus DLL auf Prgramm zugreifen
 
@luckie: meinst du, weil die dll es nicht auf die Reihe bekäme, sich zwei verschiedene Form.Handles merken könnte, oder was ganz anderes?

Luckie 28. Aug 2004 14:14

Re: Aus DLL auf Prgramm zugreifen
 
Die DLL wird nur entladen, wenn kein Prozess sie mehr benutzt. Führts du den Code nur beim Entladen aus, dann trifft meine Aussage zu. Man muss den Code dann ausführen, wenn sie von einem Prozess entladen wird. dazu muss man seine eigene DLLProc einsetzten und auf DLL_UNDETACHE oder wie das heißt reagieren.

nailor 28. Aug 2004 14:17

Re: Aus DLL auf Prgramm zugreifen
 
mann muss es ja nicht beim entladen machen. reicht ja vollkommen, wenn man es immer dann aufruft, wenn der codeabschnitt, der durchgeführt werden soll, damit sich was ändert (siehe allererste post des fragestellers) durchgelaufen ist.

Prof. emerit. Dr. Newbie 28. Aug 2004 14:49

Re: Aus DLL auf Prgramm zugreifen
 
Zitat:

Zitat von F.W.
Ich brauche eure Hilfe! Ich habe schon die ganze DP durchsucht, aber nie die konkrete Antwort auf mein Problem:

Aus meiner Anwendung heraus wird eine procedure aufgerufen (aus einer DLL), die ein Formular erzeugt und es anzeigt, aber nicht ShowModal!
Die DLL wird dynamisch erzeugt und nach erfolgreichem Ausführen der "Startprocedure" in der DLL die Caption eines in der Anwendung vorkommenden Labels auf 'Gestartet' gesetzt.
Wenn das DLL-Formular geschlossen wird, soll es das irgendwie der Anwendung mitteilen oder direkt die Caption des Labels auf 'Geschlossen' setzen.

Ich hab's selbst schon mit der Übergabe von Pointer, dem label selbst... versucht, aber es hat nie geklappt!

Könnt ihr mir sagen, wie ich das machen kann?

Also, du hast die DllMain() (== Startprocedure) und du hast eine Anwendung. Nun lädst du die DLL entweder über dynamisches Laden (oder weil sie statisch gelinkt ist) in den Adreßraum der Anwendung. Diese Anwendung hat ein Form TFormX? Oder die DLL hat ein From TFormY? Oder beide? Was soll passieren?

Du mußt hier sehr deutlich zwischen DLL und Anwendung unterscheiden. Das bitte ich dich mal zu tun um hier dein Problem herauszustellen. Ich kann jedenfalls noch immer dein Problem nicht verstehen.

Ich denke dies ließe sich einfach lösen, aber ich will hier nicht Rätselraten. Es ist nun an dir.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.
Seite 1 von 3  1 23      

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