ShellExecuteとShellExecuteExの違いは?

[戻る]
ナオーバ 2002/12/16(月) 14:23:44
ボタンを押したら自分を再起動する物を作成したくネットで検索したら、
終了処理(WM_DESTROY)にShellExecuteExするといいとありました。

いろいろ調べて以下のようなソースにしたのですが

BOOL CMainFrame::DestroyWindow() 
{
  もしボタンを押したら{
    SHELLEXECUTEINFO  sei;
    ::ZeroMemory( &sei, sizeof( SHELLEXECUTEINFO ) );
    sei.cbSize = sizeof( SHELLEXECUTEINFO );
    sei.lpFile = "D:\\Project\\EndStart\\Debug\\EndStart";
    sei.nShow  = SW_SHOWNORMAL;
    ::ShellExecuteEx(&sei);
  }
  
  return CFrameWnd::DestroyWindow();
}

 この場合はexeのパスしか情報が無いのでShellExecuteの方がいいんでしょうか?
 ShellExecuteとShellExecuteExの使い分けはどうするのでしょうか?

WIN2000 SP2/VC6.0 SP5/MFC使用

tib 2002/12/16(月) 15:27:41
MSDNのShellExecuteを見るとこのように書いてあります。

To obtain information about the application that is launched as a result of
calling ShellExecute, use ShellExecuteEx.

wood 2002/12/17(火) 06:26:00
tib さんと同じことなのでしょうけど

英文得意じゃないので日本語訳ドキュメント探したらこんなのありました

私のMSDN 2001年10月リーリースには
場所「プラットフォーム SDK: Windows シェル」
キーワード「ShellExecute」に
日本語訳で
「ShellExecute を呼び出した結果起動されたアプリケーションに関する情報を取得する
には、ShellExecuteEx関数を使ってください。」
とありました

ナオーバ 2002/12/17(火) 09:22:04
ありがとうございます。
ただソフトを起動して、ソフト側で終了する場合は必要なさそうですね。

ついでにすみません、ShellExecuteExで取得できる情報は
SHELLEXECUTEINFO構造体の hInstApp と hProcessくらいなのですが
これを取得できると何ができるのでしょうか?

hInstAppはShellExecuteでも取得できるので実際は hProcess だけの違いなので

よろしくお願いします

いぷ 2002/12/17(火) 10:13:49
> ついでにすみません、ShellExecuteExで取得できる情報は
> SHELLEXECUTEINFO構造体の hInstApp と hProcessくらいなのですが
> これを取得できると何ができるのでしょうか?

プロセスの終了をWaitForSingleObjectで待機できたりします。

ナオーバ 2002/12/18(水) 10:57:17
[[解決]]
ありがとうございます。
今回の場合はソフト側で終了するのでShellExecuteすみそうです

古いスレッドには追加発言できません。