求一dll完整示例,分不多全部送上!(200)

  • 主题发起人 主题发起人 nwhscy
  • 开始时间 开始时间
N

nwhscy

Unregistered / Unconfirmed
GUEST, unregistred user!
在下正在做一个项目集成,是关于档案管理方面的,现在要求把exe换成dll。在网上搜了N长时间还是没有头绪,希望各位前辈能够拉一把,感激不尽!具体为:根据功能不同把该项目分成多个dll文件,每个dll文件中封装对应模块的子窗体;另外还涉及到DM窗体,要求单独写成dll文件,都是通过主窗体就可以调用。在下头都大了,睡眠严重不足,期待各位大大的帮助!如果您有类似的完整案例,请让在下借鉴一下!尽量完整哈!谢谢!xing3110573@163.com
 
直接购买别人框架源代码得了http://www.delphibbs.com/delphibbs/dispq.asp?lid=3977443
 
To:无条件投降先谢谢这位仁兄,不过有没有简单一些的实例,只要包括上面所列出的要点就成,麻烦了!
 
dll工程:library PrgCollectInfDll;uses SysUtils, Classes, Forms, System, Messages, Dialogs, DB, DBClient,....function dcreatdm:Integer;export;stdcall;begin try if DateMoudleMain=nil then Application.CreateForm(TDateMoudleMain, DateMoudleMain); Result := 1; except Result := -1; end;end;function dcreatfm(aHandle:THandle;aindex:Integer):Integer;export;stdcall;begin try application.Handle := aHandle; case aindex of 0: begin FrmPubParaInfo := TFrmPubParaInfo.Create(nil); try FrmPubParaInfo.ShowModal; finally FrmPubParaInfo.Free; end; end; 1: begin end; 4: begin end; end; Result := 1; except Result := -1; end;end;function dfreedm:Integer;export;stdcall;begin try if DateMoudleMain<>nil then DateMoudleMain.Free; Result := 1; except Result := -1; end;end;exportsdcreatdm,dcreatfm,dfreedm;静态调用:... private { Private declarations } public { Public declarations } end; function dcreatdm:Integer;stdcall;external 'PrgCollectInfDll.dll' name 'dcreatdm'; function dcreatfm(aHandle:THandle;aindex:Integer):Integer;stdcall;external 'PrgCollectInfDll.dll' name 'dcreatfm'; function dfreedm:Integer;stdcall;external 'PrgCollectInfDll.dll' name 'dfreedm';var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin dcreatdm;end;procedure TForm1.Button2Click(Sender: TObject);begin dcreatfm(Application.Handle,0);end;procedure TForm1.Button3Click(Sender: TObject);begin dfreedm;end;procedure TForm1.Button4Click(Sender: TObject);begin dcreatfm(Application.Handle,1);end;...
 
如果是多文档的话,返回tform就可以了
 
在 http://ufo2003.ys168.com delphi源码目录下有个udpdll的示例
 
1.对你开发的dll需要进行统一的约定,也就是说dll导出函数的名称都起得一样(按序号导出也行),简单说导出函数声明相同,数据连接组件的地址可以声明在参数中,其它信息也可以加入参数进行传递,举个例子 //导出函数Show_proc //调用客户模块的方法 //参数:AppHandle (主应用程序句柄) //参数MainForm (主程序即登陆后的mdi主窗口的 MainForm) //参数ADOPointer (ADOConnection 传递给dll的Ado指针) //参数AModelCode (模块代号,在此程序中代表了客户管理的模块号) //参数UserCode (人员代号,在此程序中代表了操作人员的员工号) //参数UserName (操作人员名称) //参数UserDeption(人员所在部门代号) procedure Show_Proc(AppHandle:THandle;MainForm:TForm;ADOPointer:Pointer; AModelCode:String;UserCode:String;UserName:String;UserDeption:String); stdcall; //导出函数Close_Proc //提供给Mdi主窗口关闭子模块的方法 procedure Close_Proc;stdcall;2.建立自己的菜单定义工具,定义功能模块与dll之间的关系3.主窗口调用功能模块时动态加载进dll进进程序,找到约定的导出函数地址进行调用。好多年没用delphi了,只记得这么多了,不过还是建议你购买现成的把,你也简单,源码作者也舒服。[:D]
 
看不懂,了,好多年没有动这个东西 了
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
909
DelphiTeacher的专栏
D
后退
顶部