30

使用ShellExecute 文档作为参考:

我从命令行运行以下命令:

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)的指针,但它非常混乱。

任何帮助将不胜感激。我还想了解更多信息,所以任何参考资料(书籍、网络链接等)也会很棒!

4

1 回答 1

32

Rundll32 仅支持运行具有以下签名的 DLL 导出:

void CALLBACK
  EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);

它不支持运行任意入口点。由于 ShellExecute 没有该签名,显然会发生不好的事情。

信息:Windows Rundll 和 Rundll32 接口有更多关于 rundll32 接口的信息。

如果您想从命令行执行 ShellExecute 的等效操作,只需使用 start:

C:\>start "C:\Documents and Settings\admin\Desktop\tmp"
于 2010-07-08T19:55:24.373 回答