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) と、NULL で終わる文字列へのポインター (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 に答える