ShellExecuteとShellExecuteExの違いは? – プログラミング – Home

通知
すべてクリア

[解決済] ShellExecuteとShellExecuteExの違いは?


ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

ボタンを押したら自分を再起動する物を作成したくネットで検索したら、
終了処理(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
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

MSDNのShellExecuteを見るとこのように書いてあります。

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


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

tib さんと同じことなのでしょうけど

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

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


返信引用
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

ありがとうございます。
ただソフトを起動して、ソフト側で終了する場合は必要なさそうですね。

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

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

よろしくお願いします


返信引用
いぷ
 いぷ
(@いぷ)
ゲスト
結合: 22年前
投稿: 6
 

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

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


返信引用
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

ありがとうございます。
今回の場合はソフト側で終了するのでShellExecuteすみそうです


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました