ボタンを押したら自分を再起動する物を作成したくネットで検索したら、
終了処理(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使用
MSDNのShellExecuteを見るとこのように書いてあります。
To obtain information about the application that is launched as a result of
calling ShellExecute, use ShellExecuteEx.
tib さんと同じことなのでしょうけど
英文得意じゃないので日本語訳ドキュメント探したらこんなのありました
私のMSDN 2001年10月リーリースには
場所「プラットフォーム SDK: Windows シェル」
キーワード「ShellExecute」に
日本語訳で
「ShellExecute を呼び出した結果起動されたアプリケーションに関する情報を取得する
には、ShellExecuteEx関数を使ってください。」
とありました
ありがとうございます。
ただソフトを起動して、ソフト側で終了する場合は必要なさそうですね。
ついでにすみません、ShellExecuteExで取得できる情報は
SHELLEXECUTEINFO構造体の hInstApp と hProcessくらいなのですが
これを取得できると何ができるのでしょうか?
hInstAppはShellExecuteでも取得できるので実際は hProcess だけの違いなので
よろしくお願いします
> ついでにすみません、ShellExecuteExで取得できる情報は
> SHELLEXECUTEINFO構造体の hInstApp と hProcessくらいなのですが
> これを取得できると何ができるのでしょうか?
プロセスの終了をWaitForSingleObjectで待機できたりします。
ありがとうございます。
今回の場合はソフト側で終了するのでShellExecuteすみそうです