Delphi utilise une DLL pour implémenter un exemple simple de plug-in
C'est le code de la DLL
Code d'implémentation :
bibliothèque MyDll ; utilise SysUtils, Dialogs, Classes ; procédure ShowInfo(info:PChar);stdcall; start ShowMessage('Vous avez sélectionné ['+info+']'); function GetCaption:Pchar; fin ; exporte ShowInfo, GetCaption ; {$R *.res} début fin.
C'est le code qui appelle le formulaire
Cet exemple n'utilise qu'une seule DLL, donc lorsqu'il y a plusieurs DLL, vous devez parcourir le répertoire où se trouve la DLL et charger les DLL dans l'ordre.
unité principale ; l'interface utilise Windows, Messages, SysUtils, Variantes, Classes, Graphiques, Contrôles, Formulaires, Boîtes de dialogue, StdCtrls, Menus, ExtCtrls ; type TShowInfo = procédure (info:PChar);stdcall = fonction : PChar;stdcall; = classe (TForm) Bouton1 : TButton Bouton2 : TButtonMainMenu1 : TMainMenu; Image1: TImage; procédure Button2Click(Sender: TObject); private { Déclarations privées } FHandel : THandle; //Gestion de la DLL FProAddress ; //L'adresse de ShowInfo dans la DLL showinfo : TShowInfo ; de la procédure DLL LoadPlusIn ; //Charger la procédure du plug-in (DLL) ItemClick(Sender : TObject) //Événement de clic de menu personnalisé public ; {Déclarations publiques } fin ; var Form1 : TForm1 ; implémentation {$R *.dfm} procédure TForm1.Button2Click(Expéditeur : TObject end ; procédure TForm1.ItemClick(Expéditeur : TObject ); ; //Obtenir l'adresse si @showinfo <> nil alors showinfo(PWideChar(TMenuItem(Sender).Caption)); //Exécuter ShowInfo dans la procédure TForm1.LoadPlusIn; var getcaption; item : TMenuItem; Chargement si FHandel = 0 alors commencez ShowMessage('Échec du chargement ! '); Exit; end else start @getcaption := GetProcAddress(FHandel,'GetCaption'); //Obtient l'adresse GetCaption dans la DLL si @getcaption <> nil then start item := TMenuItem.Create(MainMenu1); Créez un élément de menu.Caption := getcaption; //Obtenez la légende, c'est-à-dire appelez GetCaption dans la DLL FProAddress := GetProcAddress(FHandel,'ShowInfo'); //Obtenir l'adresse de ShowInfo dans l'élément DLL.OnClick := ItemClick; //Attribuer l'événement click à l'élément de menu MainMenu1.Items.Add(item); fin du menu principal ; fin ; fin.
Si vous avez des questions, n'hésitez pas à laisser un message ou à vous rendre dans la communauté de ce site pour communiquer et discuter. Merci d'avoir lu, j'espère que cela pourra aider tout le monde. Merci pour votre soutien à ce site !