调用DLL文件中的FORM

2016-02-19 12:46 10 1 收藏

下面图老师小编跟大家分享调用DLL文件中的FORM,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】

 

  作者:e梦缘

  好久发表文章了!!!调用DLL文件中的FORM

  

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  调用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 beginaForm := 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));  tryif GetDllHWND  32 thenbegin  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('无效的方法名调用');  finallyFreeLibrary(GetDllHWND);  end;end;procedure TForm1.Button1Click(Sender: TObject);beginRunDllForm('project1.dll','form1','showform');end;....

  

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1601877.html

延伸阅读
标签: ASP
  没有人会在没有必要的情况下采用更加麻烦的方法来工作,除非是没有选择的余地。所以如果我要告诉你有一种简单的技术可以使你的ASP开发更加快速,并且更加高效率,你一定对此特别感兴趣。这一方法将从你的ASP页中的绝大部分business logic转移到一个Visual Basic ActiveX .dll以达到提高整个网页的性能。 使用ActiveX .dll的原因  ...
我在编写一个系统时遇到了一个问题,无法在C#中调用Delphi6写的DLL,只因为DLL的参数是string类型的。然后在网上找相关的资料,还是没有结果。经过我的再三琢磨,现在已经解决,特写此文章与大家分享我的喜愉! Dellphi DLL文件: /////////////////////////////////////////////////////////////////// library mydll; uses SysUtils, Clas...
花了一下午完成了一个初步的示范的例子,看来解决图纸统一管理有了解决的办法了.下一步用jacob封装在java中调用,在服务器上控制打印管理.做个记号再慢慢完善. '取得当前文档对象(vba中的方法,如果是在VB中时需要从顶层对象开始引用取得)Dim currentDoc As AcadDocumentSet currentDoc = ThisDrawing '文档的模型空间Dim sp As AcadModelSpaceSe...
VC PB dll 和编写一般的DLL方法相同,需要注意以下两点: (1)调用约定 C函数有_stdcall、_cdecl、_fastcall等多种调用约定,调用约定用来说明函数参数的压栈顺序和由谁(函数自身还是调用者)来修改堆栈。关于调用约定的详细说明,请参考我转载的另一篇文章。 编写供PB调用DLL,请使用_stdcall调用约定,如下所示: extern "C" _declspe...
在Delphi中,要调用Chm文件可以通过引用HHctrl.ocx文件的函数HtmlHelpA实现。 不过在这里,我们也可以使用API函数ShellExecute来打开Chm帮助文件。 在网上找到的资料,通常以 ShellExecute(self.Handle,'open','help.chm','', '',SW_SHOW);? 的方式来实现。 但有个不足,就是不能打开指定的帮助页面,所...

经验教程

439

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部