![]() |
Formular aus DLL erzeugt neuen Taskleisten-Eintrag
Hi @ all,
ich versuche gerade, mich ein wenig in DLL-Programmierung einzuarbeiten ;) Also, ich habe eine DLL, die folgende Funktion exportiert (Form1 ist ein hinzugefügtes Formular):
Delphi-Quellcode:
und eine Hauptanwendung, die die Funktion verwendet (Name: Form2):
type
TTestRec = record edit : PChar; check : Boolean; end; function DLLFormular: TTestRec; stdcall; var Form1: TForm1; begin Form1:=TForm1.Create(Application); try Form1.ShowModal; Result.edit := PChar(Form1.Edit1.Text); Result.check := Form1.CheckBox1.Checked; finally Form1.Release; end; end;
Delphi-Quellcode:
Das klappt auch wunderbar, nur ist mein Problem, dass das DLL-Formular einen zusätzlichen Taskleisten-Eintrag erzeugt. Es sind dann zwei Einträge vorhanden, obwohl ich nur einen benötige.
function DLLFormular: TTestRec; stdcall; external 'pDLL.dll';
function GetStr(str: PChar): PChar; stdcall; external 'pDLL.dll'; procedure TForm2.Button1Click(Sender: TObject); var Rec: TTestRec; begin Rec := DLLFormular; Label1.Caption := Rec.edit; CheckBox1.Checked := Rec.check; end; Ein ShowMessage in der DLL-Form erzeugt übrigens noch einen dritten Eintrag... Wie kann man das verhindern? (Ich hoffe, ich habe mich verständlich ausgedrückt ;)) Viele Grüße, CK_CK |
Re: Formular aus DLL erzeugt neuen Taskleisten-Eintrag
Hallo nochmal,
ich hab' eine Lösung gefunden... ...und damit dem Nächste mit dem Problem geholfen wird poste ich die gleich mal ;) Ich habe zuerst Folgende Prozedur in die Dll integriert (und exportiert):
Delphi-Quellcode:
...und diese in der Exe einmal aufgerufen:
procedure SetHandle(handle: THandle); stdcall;
begin Application.Handle := handle; end;
Delphi-Quellcode:
Das behebt mein Problem und alle zukünftigen Formulare bekommen keinen zusätzlichen Taskbar-Eintrag... *freu*
procedure SetHandle(hndl: THandle); stdcall; external 'pDLL.dll';
//[...] SetHandle(Application.Handle); Wenn jetzt noch jemand eine Idee hat, wie ich innerhalb der Dll das Handle der Hauptanwendung bekomme (ohne die Übergabefunktion), wäre ich SEHR dankbar ;) Sonnige Grüße, CK_CK |
Re: Formular aus DLL erzeugt neuen Taskleisten-Eintrag
Das wird ohne explizite Übergabe nicht gehen. Woher soll die DLL auch wissen, wo deine Application liegt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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 by Thomas Breitkreuz