delphi 开发扩展(一)
{主程序} unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB; type TPluginName = Function:string; stdcall; TShowPerSN = function(AHandle:THandle;ADOConn:TADOConnection;ACaption:String):BOOL;StdCall; type TForm2 = class(TForm) ListBox1: TListBox; ADOConnection1: TADOConnection; procedure FormCreate(Sender: TObject); procedure ListBox1DblClick(Sender: TObject); private LibHandle: HMODULE; procedure LoadPlugins; procedure LoadPlugin(sr: TSearchRec); { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.FormCreate(Sender: TObject); begin LibHandle:=0;//初始化LibHandle的值。 LoadPlugins;//调入LoadPlugins过程。 end; procedure TForm2.LoadPlugins; var sr: TSearchRec; path: string; Found: Integer; begin path := ExtractFilePath(Application.Exename); try Found := FindFirst(path + '*.DLL', 0, sr); while Found = 0 do//查找文件。 begin LoadPlugin(sr); Found := FindNext(sr); end; finally FindClose(sr); end; end; procedure TForm2.ListBox1DblClick(Sender: TObject); var k:TPluginName;ShowPerSN:TShowPerSN; begin if ListBox1.ItemIndex<>-1 then begin if LibHandle<>0 then FreeLibrary(LibHandle); LibHandle:= LoadLibrary(Pchar(self.ListBox1.Items[self.ListBox1.ItemIndex])); if LibHandle <> 0 then begin try @k:= GetProcAddress(LibHandle, 'GetName'); self.Text:=k; @ShowPerSN:= GetProcAddress(LibHandle,'GetForm'); if not (@ShowPerSN = nil) then begin ShowPerSN(application.Handle,ADOConnection1,''); Invalidate; end; Except FreeLibrary(LibHandle); LibHandle:=0; end; end else ShowMessage('loading Dll file error!'); end; end; procedure TForm2.LoadPlugin(sr: TSearchRec); var iLibHandle: HMODULE; begin iLibHandle := LoadLibrary(Pchar(sr.Name)); if iLibHandle <> 0 then begin try ListBox1.Items.Add(sr.Name); finally FreeLibrary(iLibHandle); end; end else ShowMessage('loading Dll file error!'); end; end.
好的代码像粥一样,都是用时间熬出来的
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)