rundll32调用有参数的DLL导出函数?该如何解决
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 呼叫的导出函数签名必须是这样的:
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.****.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