打印本文 打印本文 关闭窗口 关闭窗口
dll的创建与调用
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1517  更新时间:2009/4/23 18:41:00  文章录入:mintao  责任编辑:mintao
;     Label1.Caption := ''''位于第''''+IntToStr(Order+1)+''''位'''';

  Freelibrary(Moudle);

end;

 

//———————————— 用于实现数据传输的DLLs的编写 

用于实现数据传输的DLLs与一般DLLs的编写基本相同,其中特别的地方是:

1. 定义一个全局变量句柄: 

 var

   hMem: THandle;

2. 定义一个过程,返回该全局变量的句柄。该过程要包含在exports子句中。如: 

 function GetGlobalMem: THandle; export;

 begin

    Result := hMem;

 end;

3. 在初始化代码中分配全局内存块:

 程序清单如下: 

begin

  hMem := GlobalAlloc(gmem_MOVEABLE and gmem_DDEShare,num);

  if hMem = 0 then

  MessageDlg(''''Could not allocate memory'''',mtWarning,[mbOK],0);

end.

//————————————————————————————————

 num是一个预定义的常数。

表10.3 全局内存块的分配标志 :标 志 意 义

—————————————————————————————————

gmem_DDEShare 分配可由应用程序共享的内存

gmem_Discardable 分配可抛弃的内存(只与gmem_Moveable连用)

gmem_Fixed 分配固定内存

gmem_Moveable 分配可移动的内存

gmem_Nocompact 该全局堆中的内存不能被压缩或抛弃

gmem_Nodiscard 该全局堆中的内存不能被抛弃

gmem_NOT_Banked 分配不能被分段的内存

gmem_Notify 通知功能。当该内存被抛弃时调用GlobalNotify函数

gmem_Zeroinit 将所分配内存块的内容初始化为零

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

有两个预定义的常用组合是:

GHND = gmem_Moveable and gmem_Zeroinit

GPTK = gmem_Fixed and gmem_Zeroinit

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口