我想用无窗体的程序调用DLL文件的应用程序架构,请问调用程序怎么写?

yuzhiyong 2012-03-18 01:54:54
一、我想用无窗体的程序调用一个DLL(登录窗体),如果写主调用程序?
二、登录身份验证通过后再调用另一个DLL(导航台),其中导航台有个“注销”功能,即回到主调用程序,重新调用DLL(登录窗体),这又如何实现?

不知道我的叙述大家都明白没有,还请大家多多帮忙,谢谢各位!

...全文
234 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
我看见佛 2012-03-27
  • 打赏
  • 举报
回复
Visible := False;//隐藏主窗口,把这个直接改成Form1.Free;
Visible := true;//Application.CreateForm(TForm1, Form1);
Form1.Show();

改成这样就可以了

但如果要实现纯DLL的话,DLL间参数传递等,这点我也还不怎么清楚
yuzhiyong 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 case5166 的回复:]

Delphi(Pascal) code

Visible := False;//隐藏主窗口
Dll := LoadLibrary('DllLogin.dll');
if ShowModalFormByClassName('TSysLoginForm') = mrOk then
begin
//登陆成功事件。
FreeLibrary(Dll);
Visible :……
[/Quote]

这样写“注销”实际上并没有将主窗口关闭,我想要的结果是关闭所有主调程序的窗口后,只剩下主调程序进程,再调用登陆窗口,也就是回到最初的启动状态,不知道这样能否做到。
山东蓝鸟贵薪 2012-03-19
  • 打赏
  • 举报
回复
主要是接口参数问题的,注意一下哟
kaikai_kk 2012-03-19
  • 打赏
  • 举报
回复
可以动态调用dll,找找LoadLibrary,GetProcAddress,FreeLibrary这3个函数用法吧,
还有就是不同的dll之间共享数据是如何实现的
我看见佛 2012-03-18
  • 打赏
  • 举报
回复

Visible := False;//隐藏主窗口
Dll := LoadLibrary('DllLogin.dll');
if ShowModalFormByClassName('TSysLoginForm') = mrOk then
begin
//登陆成功事件。
FreeLibrary(Dll);
Visible := true;//显示主窗口
end

//因为我做的是数据库应用程序开发,很多地方各个DLL都要共同继承一个窗口,和注册类。所以用了BPL,所以并不是完全的DLL开发。ShowModalFormByClassName这是BPL中的一个函数,提供个思路参考下。

你可以参考:关于一个项目的总结 ( EXE+BPL+DLL 模式)
http://www.cnblogs.com/long6/articles/2098182.html我的做法就类似于这个。
yuzhiyong 2012-03-18
  • 打赏
  • 举报
回复
感谢你第一个问题的回复,那第二个问题怎么解决?
我看见佛 2012-03-18
  • 打赏
  • 举报
回复
 
Application.Initialize;
Application.Run;
Dll := LoadLibrary('DllLogin.dll');
if Dll < 32 then
begin
Application.Terminate;
end;
ShowModalFormByClassName('TSysLoginForm');//自定义的一个函数
//登陆成功后:LoadLibrary('DllMain.dll');
FreeLibrary(Dll);
end
这是我写的EXE+BPL+Dll的程序,
因为DLL不能实现DLL部窗体继承和注册窗体类,所以我用到了BPL来嵌入。
当然,如果你不用到窗体继承和注册窗体类的话,可以不用BPL。

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧