在ISAPI扩展中如何办到?
解决方案 »
- 如何用Delphi调用.sys的驱动
- TOpenPictureDialog如何在打开的时候图像文件显示缩略图?
- 关于窗体关闭的问题
- 请教:一字符串尾部如何添加一字符?
- delphi不用控件连接数据库
- 有谁学过<计算机网络>,如此变态的考试题目,不好意思又要麻烦大家了!!
- 急急急!!!连续执行Sql语句,CPU使用率很快就达到100%!请各位大侠帮忙!
- delphi开发的应用程序windows中文版下运行正常,多语言版(英文核心,中文显示)下出现异常!
- 请教高手,DELPHI调用Windows Media encoder 9 的问题?
- AOOtable和ADOquery各使用在什么场合最合适?
- 怎样替换tstings中的一个字符串?
- 关于MDI客户窗体背景图片不能完全填充的问题?
那么如何在Dll里面取到自己的Handle?
sDllPath :=ExtractFilePath(ParamStr(0));
Test1:function:integer;
begin
hDll:=LoadLibrary('mydll.dll');
if hDll<32 then exit;//如果Dll无法加载则跳出
@Test1:=GetProcAddress(hDll,MakeIntResource(1));
//取得mydll中的第一个函数的地址。
...
FreeLibrary(hDll);
end;
而不是取得其它的Dll路径就是说,这个Dll是等待人调用的 它自己如何取得Dll的路径?
用Null做参数传入取得的是dllhost.exe路径另外 mrwyf(流星飞) 的方法取到的也是dllhost.exe路径麻烦几位再替我想想办法 谢谢了
那么如何在Dll里面取到自己的Handle?参考一下c++版本的。
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
if(lpReserved)
OutputDebugString("DLL_PROCESS_ATTACH Static load");
else
OutputDebugString("DLL_PROCESS_ATTACH Dynamic load");
GetModuleFileName(hinst,dllpath,255);
break;
case DLL_PROCESS_DETACH:
if(lpReserved)
OutputDebugString("DLL_PROCESS_DETACH Call process termination!");
else
OutputDebugString("DLL_PROCESS_DETACH FreeLibrary");
break;
case DLL_THREAD_ATTACH:
OutputDebugString("DLL_THREAD_ATTACH");
break;
case DLL_THREAD_DETACH:
OutputDebugString("DLL_THREAD_DETACH");
break;
default:
OutputDebugString("DllEntryPoint");
}
return 1;
}