请问delphi如何像VC那样,通过DLL入口函数获得DLL的hInstance ? ( 积分: 50 )

  • 主题发起人 主题发起人 icysword
  • 开始时间 开始时间
I

icysword

Unregistered / Unconfirmed
GUEST, unregistred user!
VC里面可以通过使用DllEntryPoint函数里面的参数来获得hInstance实例句柄,&nbsp;<br>BOOL&nbsp;WINAPI&nbsp;DllEntryPoint(<br><br>&nbsp;&nbsp;&nbsp;&nbsp;HINSTANCE&nbsp;hinstDLL, //&nbsp;handle&nbsp;to&nbsp;DLL&nbsp;module&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;fdwReason, //&nbsp;reason&nbsp;for&nbsp;calling&nbsp;function&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;LPVOID&nbsp;lpvReserved&nbsp; //&nbsp;reserved&nbsp;<br>&nbsp;&nbsp;&nbsp;);<br><br>但应用在delphi好像不行,&nbsp;试过&nbsp;<br>function&nbsp;DllEntryPoint(hinstDLL:LongWord; //&nbsp;handle&nbsp;to&nbsp;DLL&nbsp;module<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fdwReason:DWORD; //&nbsp;reason&nbsp;for&nbsp;calling&nbsp;function<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpvReserved:Pointer&nbsp; //&nbsp;reserved<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;):Bool;<br>begin<br>&nbsp;&nbsp;MessageBox(0,'Load',PChar(IntToHex(hinstDLL,0)),0);<br>end;<br><br>Load对话框是显示了,但是hinstDLL的值却总是为0,&nbsp;为什么?<br><br>请问在delphi中该怎样(利用该函数)获得DLL的实例句柄呢?&nbsp;<br>(不用delphi的全局变量hInstance,也不用GetModuleHandle('DllName')来获得).
 
getmodulehandle(nil)
 
GetModuleHandle(nil)是获得调用的EXE实例句柄吧.<br>GetModuleFileName(GetModuleHandle(nil),@lpBuf,260);<br>得到的就是EXE文件名.
 
不好意思,想当然了,你可以直接用hInstance,Delphi的Windows里面直接定义的
 
是可以直接用hInstance,&nbsp;只是想知道delphi能不能像VC那样获得而已.<br>在delphi里面定义DllEntryPoint,用MessageBox测试,它也是调用的,&nbsp;但是不知道为什么那个hinstDLL却一直为0
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
932
import
I
后退
顶部