使用ShellExecute documentation作为参考:
我从命令行运行以下命令:
C:\>RUNDLL32.EXE SHELL32.DLL,ShellExecute handle,"open","C:\Documents and Settings\admin\Desktop\tmp",NULL,NULL,SW_SHOWNORMAL
这会导致异常错误。
我不知道这意味着什么:
HINSTANCE ShellExecute(
__in_opt HWND hwnd,
__in_opt LPCTSTR lpOperation,
__in LPCTSTR lpFile,
__in_opt LPCTSTR lpParameters,
__in_opt LPCTSTR lpDirectory,
__in INT nShowCmd
);
但是在描述中,提到了句柄(HWND)和指向以空字符结尾的字符串(LPCTSTR)的指针,但它非常混乱。
非常感谢任何帮助。我还想了解更多,所以任何参考书(书籍,网站链接等)也会很棒!
答案 0 :(得分:25)
Rundll32仅支持使用以下签名运行DLL导出:
void CALLBACK
EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
它不支持运行任意入口点。由于ShellExecute没有该签名,因此显然会发生不好的事情。
INFO: Windows Rundll and Rundll32 Interface有关于rundll32接口的更多信息。
如果你想从命令行执行等效的ShellExecute,只需使用start:
C:\>start "C:\Documents and Settings\admin\Desktop\tmp"