Delphi usa DLL para implementar un ejemplo simple de complemento
Este es el código de la DLL.
Código de implementación:
biblioteca MyDll; utiliza SysUtils, Diálogos, Clases; procedimiento ShowInfo(info:PChar); stdcall; comienza ShowMessage('Seleccionó ['+info+']'); finalizar; exporta ShowInfo, GetCaption; {$R *.res} comienza y finaliza.
Este es el código que llama al formulario.
Este ejemplo solo usa una DLL, por lo que cuando hay varias DLL, debe recorrer el directorio donde se encuentra la DLL y cargar las DLL en secuencia.
unidad principal; la interfaz utiliza Windows, Mensajes, SysUtils, Variantes, Clases, Gráficos, Controles, Formularios, Diálogos, StdCtrls, Menús, ExtCtrls tipo TShowInfo = procedimiento (info:PChar);stdcall = función: PChar;stdcall1; = clase(TForm) Botón1: TBotón2: TBotónMenú Principal1: TMainMenu; Imagen1: TImage; procedimiento Button2Click(Remitente: TObject); privado { Declaraciones privadas } FHandel: THandle; //Establecer para carga dinámica del procedimiento DLL LoadPlusIn //Cargar el procedimiento del complemento (DLL) ItemClick(Sender: TObject //Evento de clic en menú personalizado público); { Declaraciones públicas } fin; var Form1: TForm1; implementación {$R *.dfm} procedimiento TForm1.Button2Click(Remitente: TObject); inicio LoadPlusIn; procedimiento TForm1.ItemClick(Remitente: TObject):= FProAddress; ; //Obtener dirección si @showinfo <> nil entonces showinfo(PWideChar(TMenuItem(Sender).Caption)); //Ejecutar ShowInfo al final de la DLL; procedimiento TForm1.LoadPlusIn; var getcaption: TGetCaption; Cargando si FHandel = 0, luego comience ShowMessage('¡Error al cargar! '); Salir; fin si no comenzar @getcaption := GetProcAddress(FHandel,'GetCaption'); //Obtener la dirección GetCaption en la DLL si @getcaption <> nil luego comenzar el elemento := TMenuItem.Create(MainMenu1); Crear un elemento de menú.Caption := getcaption //Obtener el título, es decir, llamar a GetCaption en la DLL FProAddress := GetProcAddress(FHandel,'ShowInfo'); //Obtiene la dirección de ShowInfo en el elemento DLL.OnClick := ItemClick; //Asigna el evento de clic al elemento del menú MainMenu1.Items.Add(item); menú principalfin; fin; fin;
Si tiene alguna pregunta, deje un mensaje o vaya a la comunidad de este sitio para comunicarse y discutir. Gracias por leer. Espero que pueda ayudar a todos. ¡Gracias por su apoyo a este sitio!