请问:这个过程如何调用?(50分)

  • 主题发起人 主题发起人 凌云客
  • 开始时间 开始时间

凌云客

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
procedure InstIcon(ToyIcon:TIcon;IconHandle:THandle);stdcall;
const Icon_ID=1;
; ; ; MI_ICONEVENT=WM_USER+1;
var
; ;IconData:TNotifyIconData;
begin
; ; ;IconData.cbSize:=SizeOf(IconData);
; ; ;IconData.Wnd:=IconHandle;
; ; ;IconData.uID:=Icon_ID;
; ; ;IconData.uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
; ; ;IconData.uCallbackMessage:=MI_ICONEVENT;
; ; ;IconData.hIcon:=ToyIcon.Handle;
; ; ;IconData.szTip:='欢迎使用。';
; ; ;Shell_NotifyIcon(NIM_ADD,@IconData);
end;
请问,这一段Dll里的过程,如何动态的调用。要动态调用。
谢谢。
 
定义一个类型:
type TFNInstIcon=procedure (ToyIcon:TIcon;IconHandle:THandle);stdcall;
代码:
var
; m:HModule;
; fn:TFNInstIcon;
begin
m:=LoadLibrary('你的.dll');
fn:=GetProcAddress(m,'InstIcon'); //注意:大小写敏感的!
fn(......); //注意如果你不确定你的资源要使用到几时,那么不要使用FreeLibrary释放库
; ; ; ; ; ; //在win32下进程退出的时候会给你FreeLibrary的,比你在不清楚的情况下Free好
; ; ; ; ; ; //这不比在windows3.1下一定要freeLibrary。
end;
 
谢谢。我试试吧。
  不过有一个问题:GetProcAddress(Handle,...),您的m是HModule。而HModule又
是什么?
  哦,我学Delphi不久,可能有些问题比较菜,请各位耐心一点儿,为我讲讲,可以吗?
 
HMODULE公开的说是模块句柄,实质是装入的模块在内存的地址
 
谢谢啦。
 
后退
顶部