设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源平台

调用DLL文件中的FORM

来源网络收集 作者:佚名 时间:2007-4-26 4:46:53 该文得分0
 

作者:e梦缘

好久发表文章了!!!

调用DLL文件中的FORM,具体实现过程如下:

library Project1;uses  SysUtils,   Classes,Forms,windows,dialogs,  Unit1 in 'Unit1.pas' {Form1};{$R *.res}function showform(formname:string):boolean;stdcall;var  TheClass: TPersistentClass;  aForm: TForm;begin result:=false; {如果您的Dll中有很多FORM,请在这儿注册哦 RegisterClasses([TForm1,TForm2,TForm3,...]); } RegisterClasses([TForm1]); TheClass := GetClass('T' + FormName); if (TheClass = nil) then   exit; if TheClass.InheritsFrom(TForm)  then begin    aForm := Tform(TheClass.Create).Create(nil);    try      aForm.ShowModal;      result:=true;    finally      FreeAndNil(aForm);    end; end;end;exportsshowform;beginend.



....procedure  RunDllForm(const DllFileName,DllFormName:String;const methodName:string);typeTRunForm=function(formname:string):boolean;stdcall;var  RunForm: TRunForm;  GetDllHWND: HWND;begin  GetDllHWND := LoadLibrary(PChar(DllFileName));  try    if GetDllHWND < 32 then    begin      MessageBox(0, Pchar('没有找到'+DllFileName+'DLL文件!'),'加载DLL失败', MB_OK);      Exit;    end;    @RunForm := GetProcAddress(GetDllHWND,pchar(methodName));    if @RunForm <> nil then       try         RunForm(DllFormName);       except         raise Exception.Create('对不起,找不到T' + DllFormName+ '窗体!');       end     else     raise Exception.Create('无效的方法名调用');  finally    FreeLibrary(GetDllHWND);  end;end;procedure TForm1.Button1Click(Sender: TObject);beginRunDllForm('project1.dll','form1','showform');end;....

相关文章
广告赞助
网友评论

共有 0 位网友发表了评论,平均得分: 0 查看完整内容

用户名:

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

(注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码