AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi DLL laden und trotzdem Hauptprogramm benutzen
Thema durchsuchen
Ansicht
Themen-Optionen

DLL laden und trotzdem Hauptprogramm benutzen

Ein Thema von Tommy82 · begonnen am 25. Jul 2007 · letzter Beitrag vom 26. Jul 2007
Antwort Antwort
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#1

DLL laden und trotzdem Hauptprogramm benutzen

  Alt 25. Jul 2007, 14:19
Delphi-Quellcode:
Procedure TForm1.zeige_DLL(Dateiname, Name:String);
var
DLL:TDLL;
Handle : THandle;
BEGIN
Handle := LoadLibrary(PCHAR(ExtractFilePath(ParamStr(0)) + '\Dlls\' + Dateiname));
IF Handle <> 0 THEN
BEGIN
  @DLL := GetProcAddress(Handle, PCHAR(Name));
  IF @DLL <> NIL THEN DLL ELSE Showmessage('Fehler beim Laden der Datei "'+Dateiname+'"');
END;
FreeLibrary(Handle);
END;
Hallo,

damit lade ich ein DLL-Formular aus dem Hauptprogramm heraus dynamisch.
In der DLL lasse ich das Formulat mit ShowModal anzeigen.

Das Problem ist nur, dass wenn ich das Formular auf habe, habe ich KEINEN Zugriff mehr auf das Hauptprogramm, sondern ich muss das Formular der DLL erst wieder beenden.
Was kann ich tun, damit ich trotz DLL-Formular immernoch auf das Hauptprogramm zugreifen kann?

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: DLL laden und trotzdem Hauptprogramm benutzen

  Alt 25. Jul 2007, 14:31
Zitat von Tommy82:
In der DLL lasse ich das Formulat mit ShowModal anzeigen.
Das Formular nicht modal anzeigen lassen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: DLL laden und trotzdem Hauptprogramm benutzen

  Alt 25. Jul 2007, 14:31
anstelle von Show einfach ShowModal verwenden
ShowModal ist schließlich genau dafür da um den Effekt zu erzielen der dir wohl nicht zusagt.
Die Dll kannst du dann natürlich nicht sofort entladen sondern erst wenn den Form aus der DLL geschlossen ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: DLL laden und trotzdem Hauptprogramm benutzen

  Alt 25. Jul 2007, 14:34
Zitat von SirThornberry:
anstelle von Show einfach ShowModal verwenden
Umgekehrt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#5

Re: DLL laden und trotzdem Hauptprogramm benutzen

  Alt 25. Jul 2007, 14:39
Aber wenn ich Show anstatt ShowModal verwende, bekomme ich eine Schutzverletzung

Delphi-Quellcode:
Procedure Anzeigen;
var Form1 : TForm1;
BEGIN
 Form1 := TForm1.Create(NIL);
 Form1.ShowModal;
 Form1.Free;
END;
Also das Modal weg und er beendet das Formular wieder, dann das Free weg und es kommt ne Schutzverletzung.
Vorschläge?

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: DLL laden und trotzdem Hauptprogramm benutzen

  Alt 25. Jul 2007, 14:51
das Free muss natürlich weg sonst wird es sofort wieder frei gegeben. Und wenn dann eine Schutzverletzung kommt liegt es wahrscheinlich daran das du genau das Gegenteil, von dem was ich geschrieben habe, machst. Du darfst die DLL nicht sofort wieder entladen (also FreeLibrary erst auführen wenn dein Formular auch wirklich geschlossen und frei gegeben wurde)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#7

Re: DLL laden und trotzdem Hauptprogramm benutzen

  Alt 26. Jul 2007, 12:56
entschuldige meine Unwissenheit, aber wie bekomme ich denn raus ob das Formular nun geschlossen wird ?
Kann das Hauptprogramm das auch irgendwie abfragen?

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: DLL laden und trotzdem Hauptprogramm benutzen

  Alt 26. Jul 2007, 12:58
Du hast doch ein OnClose im Formular der DLL. Darin kannst du zum Beispiel dem Hauptprogramm über eine Callbackmethode bescheid geben. Oder du sendest eine Message an das Hauptprogramm.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#9

Re: DLL laden und trotzdem Hauptprogramm benutzen

  Alt 26. Jul 2007, 13:49
habs über die Message gemacht. Dankeschöön
  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 12:42 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