变量 | 描述 |
---|---|
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. |