一定要复制应用程序的句柄给DLL的TApplication对象
解决方案 »
- delphi嵌套一个webbrowser 如何去掉它的边框
- Delphi vc vb特点
- 在BDE中如何配置IntrBase的数据库
- Delphi里自己带的数据数据库里的表里的数据库坏了,有没有办法恢复?
- 请教一个数据库小问题?
- 求救高手:fastreport的一个问题
- COM+资源鉴定问题
- 第一次用installshield制作安装文件,请指教
- 做了个asp的组件,关于验证登陆方面的,有兴趣的请进 。。。
- 如何入庳学习CGI?
- 软件工程DFD、IPO、HIPO等讨论,138分等你!(软工那边太冷静,还是Delphi大本营好)
- 众位高手,小弟想问一下什么是I/O卡,它有什么用处,有没有专门介绍它的网站? 100分,请笑纳
Application.Handle:=AHandle;{AHandle时传进DLL的Application.Handle}
try
Application.CreateForm(TTmpForm, TmpForm);
TmpForm.ShowModal;
if OpenDialog.Excute then
......
end; finally
//Application.Handle:=0;{这里到底该怎么做?}
TmpForm.Destroy;
end;
因为程序改乱了,所以一时糊涂,写错了!希望继续交流!
library Watch;uses
SysUtils,
Classes,
Windows,
Forms,
WatchFrm in 'source\WatchFrm.pas' {frmWatch};var
DllApp : TApplication;{$R *.res}procedure MyDLLProc(Reason: Integer);
begin
// 在DLL退出时还原参数防止异常
if Reason = DLL_PROCESS_DETACH then
begin
if Assigned(DllApp) then
begin
Application := DllApp;
end;
end;
end;
procedure WatchShow(App: TApplication); stdcall; export;
begin
if not Assigned(DllApp) then
begin
DllApp := Application;
Application := App;
end; if not Assigned(frmWatch) then
frmWatch := TfrmWatch.Create(Application);
frmWatch.Show;end;//输出函数
exports
WatchShow;begin
DllProc := @MyDllProc;
end.
DLL_PROCESS_DETACH 是什么东西?
Assigned()什么意思?为什么可以用作判断条件??谢谢先!
具体参阅相关书籍dll的部分,very easy
不过我有个问题,哪位大峡用d6实现过dll的出入口函数,好象根本不起作用
然而当我关闭DLL窗口时,什么都不见了,我用任务管理器查看,进程非但没有结束,反而增加使用内存约2M。我的编译环境是 Win2k ADS + Service pack 2
Delphi 6.0 + service pack 1请释疑,谢谢!