Delphi menggunakan DLL untuk mengimplementasikan contoh plug-in sederhana
Ini adalah kode DLL
Kode implementasi:
perpustakaan MyDll; menggunakan SysUtils, Dialog, Kelas; prosedur ShowInfo(info:PChar);stdcall; mulai ShowMessage('Anda memilih ['+info+']'); akhir; ekspor ShowInfo, GetCaption; {$R *.res} mulai akhir.
Ini adalah kode yang memanggil formulir
Contoh ini hanya menggunakan satu DLL, jadi jika ada beberapa DLL, Anda perlu mengulang direktori tempat DLL berada dan memuat DLL secara berurutan.
unit Utama; antarmuka menggunakan Windows, Pesan, SysUtils, Varian, Kelas, Grafik, Kontrol, Formulir, Dialog, StdCtrls, Menu, ExtCtrls ketik TShowInfo = prosedur (info:PChar);stdcall = fungsi : PChar;stdcall; = kelas(TForm) Tombol1: Tombol T; Tombol2: TombolMenu Utama1: TMainMenu; Gambar1: TImage; prosedur Button2Click(Pengirim: TObject); private { Deklarasi pribadi } FHandel : THandle; //DLL menangani FProAddress: Pointer; //Alamat ShowInfo di DLL showinfo: TShowInfo; dari prosedur DLL LoadPlusIn; //Muat prosedur plug-in (DLL) ItemClick(Pengirim: TObject); //Acara klik menu khusus publik { Deklarasi publik } akhir; var Form1: TForm1; implementasi {$R *.dfm} prosedur TForm1.Button2Click(Pengirim: TObject); mulai LoadPlusIn akhir; ; //Dapatkan alamat jika @showinfo <> nihil lalu showinfo(PWideChar(TMenuItem(Sender).Caption)); //Jalankan ShowInfo di akhir DLL; prosedur TForm1.LoadPlusIn; var getcaption: TGetCaption; Memuat jika FHandel = 0 lalu mulai ShowMessage('Pemuatan gagal! '); Keluar; akhiri yang lain mulai @getcaption := GetProcAddress(FHandel,'GetCaption'); //Dapatkan alamat GetCaption di DLL jika @getcaption <> nil lalu mulai item := TMenuItem.Create(MainMenu1); Buat item Menu.Caption := getcaption; //Dapatkan Caption, yaitu memanggil GetCaption di DLL FProAddress := GetProcAddress(FHandel,'ShowInfo'); //Dapatkan alamat ShowInfo di item DLL.OnClick := ItemClick; //Menetapkan event klik ke item menu MainMenu1.Items.Add(item); akhir menu utama;
Jika Anda memiliki pertanyaan, silakan tinggalkan pesan atau kunjungi komunitas situs ini untuk berkomunikasi dan berdiskusi. Terima kasih telah membaca. Saya harap ini dapat membantu semua orang.