Delphi中DLL初始化和退出处理
来源:互联网 发布:科比王力宏小视频软件 编辑:程序博客网 时间:2024/06/06 06:50
<1>利用Unit的Initalization与Finalization这两个小节
可以在Unit的这两个小节中安排Unit的进入和退出,但是
Program与Library并没有这两个部分,所以只能写在Unit中。
<2>利用ExitProc变量
在Library的begin..end.中间是可以写代码的,这里可以放置
DLL初始化代码。如果想要做善后工作,则可以利用ExitProc变量。
我们首先在初始化代码中把ExitProc中包含的默认的善后过程地址保
存下来,然后把自定义的过程的地址赋给它,这样DLL退出时就会执
行我们制定的程序;在自定义的过程的最后,把ExitProc恢复原来的
默认值,以便DLL能够继续完成原来默认的善后工作。下面是示例:
library MyDLL;
...
OldExitProc: pointer;
...
procedure MyExitProc;
begin
... //善后程序
ExitProc := OldExitProc;
end;
...
begin
... //初始化程序
OldExitProc := ExitProc;
ExitProc := @MyExitProc;
end.
<3>利用DllProc变量
和ExitProc一样,DllProc也是一个在Systemd单元中预定义的变
量。在使用DLLProc时, 必须先写好一个具有以下原型的程序:
procedure DLLHandler(Reason: integer);
并在library的begin..end.之间, 将这个DLLHandler程序的执行地
址赋给DLLProc中, 这时就可以根据参数Reason的值分别作出相应的
处理。另外注意要将Windows单元加入uses子句。示例如下:
library TestDLL;
...
procedure MyDLLHandler(Reason: integer);
begin
case Reason of
DLL_PROCESS_DETACH:
begin
ShowMessage('整个DLL的善後程序');
end;
DLL_Process_Attach:
begin
ShowMessage('整个DLL的初始化代码');
end;
DLL_Thread_Attach:
begin
ShowMessage('当主叫端开始一个Thread时');
end;
DLL_Thread_Detach:
begin
ShowMessage('当主叫端终止一个Thread时');
end;
end;
end;
//初始化代码
DLLProc := @MyDLLHandler;
MyDLLHandle(DLL_Process_Attach);
end.
由上例可以知道,当DLL支援多进程(Thread)的处理时, DllProc非常
适合使用。
本文来自Delphi之窗,原文地址:http://www.52delphi.com
- Delphi中DLL初始化和退出处理
- Delphi中DLL初始化和退出处理
- DLL中GDIPlus初始化和退出时注意的问题
- 在delphi中,DLL加载时做初始化的Demo
- delphi中创建和使用dll
- Delphi中DLL的创建和使用
- Delphi中DLL的建立和调用
- Delphi中DLL的创建和使用
- Delphi中DLL的创建和使用
- delphi 中 DLL 操作
- Delphi Dll 消息处理 Dll (3)
- delphi中处理OleVariant和TStream
- Delphi中动态链接库(DLL)的建立和使用
- Delphi环境中编写调用DLL的方法和技巧
- Delphi中动态链接库(DLL)的建立和使用
- Delphi中动态链接库(DLL)的建立和使用
- Delphi中动态链接库(DLL)的建立和使用
- Delphi中动态链接库(DLL)的建立和使用
- sql server 2005作业/计划/复制等错误解决办法
- VC OpenGL框架
- Delphi调用Servlet
- JFreeChart Struts2组件报IllegalStateException
- java servlet 乱码
- Delphi中DLL初始化和退出处理
- .net xml
- cxf获取客户端Ip
- sharepoint quick URL
- 心愿
- dvsdk下载地址
- GLUT库与GLAUX库
- JAVA反射机制
- 【转】Oracle中用exp/imp命令快速导入导出数据(整理)