![]() |
Re: DLL als Erweiterung für mein Programm
Aha! Nagut.
Ich habe ein bestehendes Programm (für mein Netzwerk) versucht mit einer DLL auzustatten, weil oft Updates kommen und da ist es praktisch, wenn eben nur der dauerupdateteil der in der DLL liegt durch ein Update der DLL geupdatet wird. (Viele updates was? :-D ) 1. Das Programm darf nur einmal starten, dafür hab ich folgenden Code verwendet:
Delphi-Quellcode:
Seit dem Hinzufügen der DLL kommt grundsätzlich die Messagebox.
Initialization //Verhindern, dass das Programm mehrmals gestartet wird
mHandle := CreateMutex(nil, True, 'LANTool_NoDes.exe'); if GetLastError = ERROR_ALREADY_EXISTS then begin MessageDlg('LAN-Tool ist schon gestartet!!', mtInformation, [mbOk], 0); Halt; end; finalization if mHandle <> 0 then CloseHandle(mHandle); 2.Ich greife von der DLL auf ein Formular zu (das Formular, wo die function für die DLL deklariert ist), allerdings kommen da Zugriffsverletzungen aus der DLL -> Was machen? Danke! |
Re: DLL als Erweiterung für mein Programm
Zum Thema Formulare in DLL's kuck dir mal das DLL Tutorial von Assarbad an:
![]() |
Re: DLL als Erweiterung für mein Programm
Hi!
Zum Thema Plugin für die eigene Anwendung: ![]() Evtl. ist das ein anderer Ansatz, weiß ich leider nicht, aber vielleicht hilft es ja. Ciao fkerber |
Re: DLL als Erweiterung für mein Programm
@Luckie: Wie ich Formulare in DLLs bekomme weiß ich, aber meine DLL greift auf das TRichEdit im MainFormular zu. Also ich denke mal, dass es daran liegt.
Nochmal meine Frage: Ist es möglich aus einer DLL auf Objekte der Anwendung zuzugreifen? Und wenn ja, wie sieht dann das Musterbeispiel aus? Ich habe bisher nur die Unit des Hauptformulars in die Uses-Klausel der DLL-Unit eingegeben. |
Re: DLL als Erweiterung für mein Programm
Zitat:
|
Re: DLL als Erweiterung für mein Programm
Ich habe jetzt eine Funktion SetPointer in die DLL aufgenommen, mit der wird im OnCreate des Progs das Hauptfenster (darauf greift die DLL auch noch zu bzw. soll sie) und ein TRichEdit übergeben:
Auszug aus DLL:
Delphi-Quellcode:
Allerdings musste ich, weil ich ja TMain angegeben habe die Main_Unit (Hauptformular des Progs) mit reinnehmen.
uses
SysUtils, Forms, ComCtrls, Graphics, Main_Unit; var TheRichEdit: TRichEdit; TheMain: TMain; function SetPointer(ARichEdit: TRichEdit; AMain: TMain): Boolean; export; function SetSettings(S: String): Boolean; export; procedure Schreibe(S: String; AFont: TFont); export; implementation function SetPointer(ARichEdit: TRichEdit; AMain: TMain): Boolean; export; begin Result := False; TheMain := AMain; TheRichEdit := ARichEdit; Result := True; end; Aber so funktioniert es nicht. Muss ich vielleicht als Übergabeparameter Pointer nehmen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 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