调用DLL文件中的FORM

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

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

【 tulaoshi.com - 编程语言 】

 

  作者:e梦缘

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

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

  

(本文来源于图老师网站,更多请访问https://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;....

  

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

  

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

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

延伸阅读
标签: ASP
  没有人会在没有必要的情况下采用更加麻烦的方法来工作,除非是没有选择的余地。所以如果我要告诉你有一种简单的技术可以使你的ASP开发更加快速,并且更加高效率,你一定对此特别感兴趣。这一方法将从你的ASP页中的绝大部分business logic转移到一个Visual Basic ActiveX .dll以达到提高整个网页的性能。 使用ActiveX .dll的原因  ...
具体的DLL封装对象请看刘艺的《Delphi中的DLL封装和调用对象技术》及配书源码。 本人在使用DELPHI编制DLL过程中碰到了些奇怪的问题,现在将其列出来,仅供参考: 1、DELPHI生成的DLL工程中写到:ShareMem must be the first unit in your library's USES clause AND your project's。这里提到的是DLL工程和使用该DLL的工程都需...
我在编写一个系统时遇到了一个问题,无法在C#中调用Delphi6写的DLL,只因为DLL的参数是string类型的。然后在网上找相关的资料,还是没有结果。经过我的再三琢磨,现在已经解决,特写此文章与大家分享我的喜愉! Dellphi DLL文件: /////////////////////////////////////////////////////////////////// library mydll; uses SysUtils, Clas...
在Delphi中,要调用Chm文件可以通过引用HHctrl.ocx文件的函数HtmlHelpA实现。 不过在这里,我们也可以使用API函数ShellExecute来打开Chm帮助文件。 在网上找到的资料,通常以 ShellExecute(self.Handle,'open','help.chm','', '',SW_SHOW);? 的方式来实现。 但有个不足,就是不能打开指定的帮助页面,所...
今天在做一个java调用windows的压缩命令时遇到一奇怪问题代码如下: 代码如下: String cmd ="C:/Program Files (x86)/WinRAR/rar.exe a c:/test.rar c:/test.log"; //System.out.println(cmd); Process proc = Runtime.getRuntime().exec(cmd); 以上代码在Xp,win7,windows server2003执行完全正常发现将代码转移到Windows Server2008之后...

经验教程

877

收藏

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