Delphi-Version: 2010
Formular bei Laufzeit aus Package laden
Hallo zusammen liebe DP'ler,
ich arbeite derzeit an ein paar Plugin Konzepten und bin bei meinen Recherchen über die Verwendung von Dlls auf Bpls gestoßen und habe mich jetzt entschieden diese zu nutzen. Von den hier anwesenden Entwicklern würde ich gerne wissen wann ich UnloadPackage(PackageModule); am besten aufrufe denn unmittelbar nach dem Laden bringt mir ja nichts da die Form dann sofort wieder verschwindet :-D Aktuelle Programmstruktur
Code:
https://i.imgur.com/wQTay3Z.png
Hostanwendung(PackageLoader.exe)
|_Plugin.bpl |_TPluginForm PackageLoader.exe Laderoutine der BPL
Delphi-Quellcode:
var
PackageModule : hModule; createProc: Procedure; begin // Package laden try PackageModule := LoadPackage('plugin.bpl'); If PackageModule <> 0 then begin @createProc := GetProcAddress( PackageModule, 'CreatePluginForm' ); // Funktion aus den Exports aufrufen if Assigned(CreateProc) then CreateProc else ShowMessage('GetProcAddress failed'); end; finally //UnloadPackage(PackageModule); end; end; plugin.bpl - uPlugin.pas https://i.imgur.com/jV2RLPG.png
Delphi-Quellcode:
unit uPlugin;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TPluginForm = class(TForm) Memo1: TMemo; Panel1: TPanel; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var PluginForm: TPluginForm; Status: Boolean; implementation uses uRandomString; {$R *.dfm} procedure TPluginForm.Button1Click(Sender: TObject); var User, pwd, mail: String; ul, pl, ml: Integer; begin Status := True; ul := StrToInt(Edit1.Text); pl := StrToInt(Edit2.Text); // ml := StrToInt(Edit3.Text); while Status do begin Application.ProcessMessages; User := RandomString(ul); pwd := RandomString(pl); //mail := RandomString(ml) + '@' + RandomString(5)+'.de'; Memo1.Lines.Add(User+':'+pwd); //+':'+mail); end; end; procedure TPluginForm.Button2Click(Sender: TObject); begin Status := False; end; function CreatePluginForm(ApplicationHandle, ParentHandle: THandle): boolean; begin Result := False; PluginForm := TPluginForm.Create(nil); try PluginForm.Show; //PluginForm.ShowModal; finally end; end; exports CreatePluginForm; initialization RegisterClass(TPluginForm); finalization UnRegisterClass(TPluginForm); end. |
AW: Formular bei Laufzeit aus Package laden
Frage auf SO (eröffnet am 10.12):
https://stackoverflow.com/questions/...age-at-runtime |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 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