| 变量 | 描述 |
|---|---|
| ExitProc | 退出处理的过程指针,可设为自定义的过程 |
| ExitCode | 退出时的状态 |
原为 LibMain 过程。
| var SaveExit: Pointer; begin {DLL的初始化工作 } SaveExit := ExitProc; { 保存原来的退出过程指针 } ExitProc := @LibExit; { 安装新的退出过程 } end. |
| function FuncName(...):ResultType; far; stdcall; begin ... result = ...; end; procedure ProcName(...); far; stdcall; |
也可在函数定义后附加 export 指示。
| exports
FuncName [name 'myfuncA'] [Index n] [resident]; |
| 参数 | 描述 |
|---|---|
| name | 过程或函数的输出名 |
| Index | 顺序号,可以加快调用过程,[1..32767] |
| resident | 用于使用频率较高的过程 |
原为 WEP 过程。
| procedure LibExit; far; begin if ExitCode = wep_System_Exit then begin { 系统关闭时的相应处理 } end else begin { DLL 卸出时的相应处理 } end; ExitProc := SaveExit; { 恢复原来的退出过程指针 } end; |
1、使用字符串参数时用:PChar,以 C 语言规则用 \0 标志字符串结束;
| ExitCode | 描述 |
|---|---|
| WEP_System_Exit | Windows 关闭 |
| WEP_Free_DLLx | DLLs 被卸出 |
| var hMem : THandle; hMem := GlobalAlloc(gmem_MOVEABLE and gmem_DDEShare,num); |
library Test;
{$S-}
uses WinTypes, WinProcs;
var
SaveExit: Pointer;
procedure LibExit; far;
begin
if ExitCode = wep_System_Exit then
begin
{ 系统关闭时的相应处理 }
end
else
begin
{ DLL卸出时的相应处理 }
end;
ExitProc := SaveExit; { 恢复原来的退出过程指针 }
end;
begin
{DLL的初始化工作 }
SaveExit := ExitProc; { 保存原来的退出过程指针 }
ExitProc := @LibExit; { 安装新的退出过程 }
end.
|