首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

rundll32调用有参数的DLL导出函数?该如何解决

2012-03-17 
rundll32调用有参数的DLL导出函数?DLL的导出函数是void WINAPI Test1(const char* strInfo)void WINAPI T

rundll32调用有参数的DLL导出函数?
DLL的导出函数是
void WINAPI Test1(const char* strInfo);
void WINAPI Test2(int num);

请问使用rundll32如何调用,谢谢!

[解决办法]
typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);
...

HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer
DWORD dwParam1;
UINT uParam2, uReturnVal;

hDLL = LoadLibrary("MyDLL");
if (hDLL != NULL)
{
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,
"DLLFunc1");
if (!lpfnDllFunc1)
{
// handle the error
FreeLibrary(hDLL);
return SOME_ERROR_CODE;
}
else
{
// call the function
uReturnVal = lpfnDllFunc1(dwParam1, uParam2);
}
}

楼主的是这个意思吗?lpfnDllFunc1就是带参数的导出函数,楼主自行定义自己需要的即可.
[解决办法]
我一直以为 RunDll 呼叫的导出函数签名必须是这样的:

C/C++ code
void WINAPI FunctionName(HWND hwnd, HINSTANCE hinst, LPWSTR lpCmdLine, int nCmdShow);
[解决办法]
http://download.csdn.net/detail/lactoferrin/4051871
Windows rundll32接口规范
[解决办法]
void WINAPI FunctionNameW(HWND hwnd, HINSTANCE hinst, LPWSTR lpCmdLine, int nCmdShow);
void WINAPI FunctionNameA(HWND hwnd, HINSTANCE hinst, LPSTR lpCmdLine, int nCmdShow);

rundll32 a.dll,FunctionName cmdline
先找FunctionNameW,如果没有再找FunctionNameA,FunctionName

热点排行