我先提示一下,在你dll unload时应该将它还原。五秒中后贴码。
解决方案 »
- 请教-------------为什么我的ScrollBox 不显示滚动条?
- 如何返回Word对象
- 如何将光盘内容制作成.iso文件,大家多加指点!
- 请问用sql语句怎么将图片存进数据库?
- 一个问题求思路
- 关于连接ole 连接 EXCEL的问题,请帮我啊
- 水晶报表在delphi下的开发,动态连接数据库及记录筛选问题的解决!
- 把adotable1中数据倒入adotable2,然后adotable1清空,如何完成?
- 初学delphi,请问delphi中有没有静态变量,就像vb中的static
- 关于文本文件的读写????
- 救命!程序太大了怎么办?!!!!!!!!!!!
- 见鬼了!!我的WIN2000的riched32.dll只有4K.复制一个正常的替换后,自己立刻就变成4k!晕呀!!在线给分!!
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.
但 fsMDIChild 时,却有 Bug兄台给我的代码,我几经调试,还是无法正常运行。连 Form 是 fsNormal 时都过不去。
老是报 地址重复。是不是我的机器有问题?Win2000 Server d4,d5,d6,Visual Studion 6
library prAbout;uses
ShareMem,
SysUtils,
Classes,
Windows,
Forms,
Dialogs,
utAbout in 'utAbout.pas' {FMAbout};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;
begin
if not Assigned(DllApp) then
begin
DllApp := Application;
Application := App;
end; if not Assigned(FMAbout) then
FMAbout := TFMAbout.Create(Application);
FMAbout.Show;
end;procedure ShowAbout(AHandle: THandle); StdCall;
begin
Application.Handle := AHandle; if FMAbout=nil then
FMAbout := TFMAbout.Create(Application);
FMAbout.ShowModal;
end;exports ShowAbout;
exports WatchShow;begin
DllProc := @MyDllProc;
end.
终于找到了解决方案,送分的同时,希望 Nizvoo(瓦匠泥★恨不抗日死) 能看到。再次感谢 Nizvoo(瓦匠泥★恨不抗日死) 的拔刀相助。http://vcl.vclxx.org/DELPHI/D32SAMPL/MDIDLL.ZIP