我用Delphi7写了一个DLL,其中用到数据库ADOConnection,在DLL工程文件begin end.中加入CoInitialize(nil),
想通过设置DLLPROC函数达到DLL退出时调用CoUninitialize。代码如下:OldDLLProc: pointer;begin
CoInitialize(nil);
InitiaVar(Hint);
CrtAdoC(Hint);
OldDLLProc := @DLLProc;
DLLProc := @ext;
ext(DLL_Process_Detach); //此参数也曾尝试用DLL_Thread_Detach,效果一样
end. function ext(dwReason: Cardinal): integer; stdcall;
begin
CloseFile(myTxt[0]);
Application.MessageBox('czc','',0);
CoUninitialize;
end; 函数ext无法在DLL退出时被调用,而是在启动时就被调用了。
如果不显示在初始化时加上ext(DLL_Process_Detach);,在哪个地方加,可以达到DLL退出时自动被执行呢?
从Delphi7帮助中得知,DLL退出时只能通过设置DLLPROC这个指针来处理DLL清场的事情。
想通过设置DLLPROC函数达到DLL退出时调用CoUninitialize。代码如下:OldDLLProc: pointer;begin
CoInitialize(nil);
InitiaVar(Hint);
CrtAdoC(Hint);
OldDLLProc := @DLLProc;
DLLProc := @ext;
ext(DLL_Process_Detach); //此参数也曾尝试用DLL_Thread_Detach,效果一样
end. function ext(dwReason: Cardinal): integer; stdcall;
begin
CloseFile(myTxt[0]);
Application.MessageBox('czc','',0);
CoUninitialize;
end; 函数ext无法在DLL退出时被调用,而是在启动时就被调用了。
如果不显示在初始化时加上ext(DLL_Process_Detach);,在哪个地方加,可以达到DLL退出时自动被执行呢?
从Delphi7帮助中得知,DLL退出时只能通过设置DLLPROC这个指针来处理DLL清场的事情。
解决方案 »
- 激情真人CS
- 导出excel问题
- 一个变量类型转换的问题
- 想知道文件被哪些进程引用,类似于unlocker的原理
- 请教如何用程序实现word文件的编辑?
- table组件 连接出现general SQL error BDE error:13059请教
- 在DBGrid中选择多个数据进行打印!!高手请教!!
- 在线给分........................................................点击dbgrid中的一条记录后,为什么dbgrid.selectedrows.cout的值为零
- SQL控件的使用,请高手帮忙。。。
- 请问用Delphi做的DCOM控件在VC中能够用吗?
- xe2 在win7 64位下能安装 unidac组件吗?
- 读取htm页面,修改后用SaveToFile写入,结果中文变乱码,怎么办??
procedure ext(dwReason: Cardinal);
begin
case dwReason of
DLL_PROCESS_ATTACH:
MessageBox(0,'Attach','Test',0);
DLL_PROCESS_DETACH:
MessageBox(0,'Detach','Test',0);
end;
end;
1.
function ext(dwReason: Cardinal): integer; stdcall;
改成
function ext(dwReason: Cardinal): integer; register;
begin
if dwReason= DLL_PROCESS_DETACH then
begin
CloseFile(myTxt[0]);
Application.MessageBox('czc','',0);
CoUninitialize;
end;
end;2.
DLLProc := @ext;
// ext(DLL_Process_Detach); //这一句不要