易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi中DLL初始化和退出处理

Delphi中DLL初始化和退出处理
choysan
2010-01-08 8:56:43
<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:
   


相关文档:

DELPHI GetWindowText 获取窗口标题

//声明:
GetWindowText(
hWnd: HWND; {窗口句柄}
lpString: PChar; {接收文本的缓冲区的指针}
nMaxCount: Integer {指定缓冲区大小, 其中包含NULL字符; 如果文本超出,会被被截断}
): Integer; {返回字符个数, 不包括中断的空字符; 如果标题为空或句柄无效, 则返回零}
//举例:
var
arr: ......

在DELPHI中实现无标题窗体的移动最简单的方法

在窗体的OnMouseDown事件中加入下面几行代码即可
If Button = mbleft Then
begin
ReleaseCapture;
SendMessage(MainForm.Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
end;
若窗体的表面被别的控件履盖掉,则需要把上面的代码加入履盖的控件里面。  ......

边用边学Delphi编程

本书通过典型的实例,系统地介绍了Delphi典型组件的基本使用方法和一些使用技巧。每一个实例都提供了程序的源代码、操作步骤,并且在一些特殊的实例中注明了知识点。力争使读者通过阅读实例后,可以较好地掌握每一个知识点。 本书分为五章,内容由浅入深、循序渐进,适用于初级用户和院校师生学习参考。 下载阅读边用边学D ......

Delphi遍历Panel组件上的所有控件

procedure frmMain.CLS; //主窗体自定义事件CLS
var i:integer;
begin
  for i:=0 to panel5.ControlCount -1 do
  begin
    if panel5.Controls[i] is TEdit then  //Edit组件
    begin
       ((panel5.Contro ......

使用Delphi调用WebServices接口的简单应用实例


Delphi从6.0就开始支持Web Services的开发和应用了,本文通过使用Delphi 7.0调用新浪发送短信的Web Service进行短信应用程序开发这一实例详细的介绍在Delphi中如何开发基于Web Services的应用系统。
第一步,准备工作,了解新浪短信Web Service。新浪发送短信的Web Service地址是http://smsinter.sina.com.cn/ws/smswebs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号