C++でほかの*.exeファイルを起動するには?

解決


pen  2009-04-13 20:16:13  No: 69985

ShowDialogで参照した実行ファイルを起動する方法がよくわかりません。
関数名(選択したファイルを格納した変数);
みたいな形で実行する方法ありませんか?


επιστημη  URL  2009-04-13 20:20:22  No: 69986

ShellExecute/ShellExecuteEx でも使えばいいんじゃないかしら。
http://msdn.microsoft.com/ja-jp/library/cc422072.aspx


kaoaru  2009-04-13 23:43:13  No: 69987

私もHINSTANCE ShellExecute(hwnd, lpszOp, lpszFile, lpszParams, lpszDir, wShowCmd)が真っ先に浮かびますが、起動を掛けることができる程度に考えてください。私の場合にはちゃんと起動できたかどうかは全てのウィンドウハンドルを列挙してから存在を調べて確認する方法をとっています。
他にもやりかたがあると思いますがこれが一番簡単だと思っています。2重起動しちゃいけないのに起動してしまうプログラムもありますし...。


pen  2009-04-14 02:08:34  No: 69988

fatal error C1083: include ファイルを開けません。'shell32.lib': No such file or directory
とメッセージが出てビルドがうまくいきません。上記のメッセージは、どう解釈したらよいのでしょうか?


Blue  2009-04-14 02:34:02  No: 69989

>ShowDialog
ということは Windows フォーム アプリケーション?
(環境は必ず明記すべき。)

だったら

System.Diagnostics.Process.Start

を使うほうが普通でしょう。


YuO  2009-04-14 02:35:01  No: 69990

shell32.libはインポートライブラリですから,リンクするものです。
#includeするものではありません。

#includeするのは,項目「ヘッダ」に書いてあるshellapi.hです。


kaoaru  2009-04-14 06:08:10  No: 69991

ヘッダの指定だけではリンクのところで「shell32.lib」を指定しておかないとエラーが出ると思います。

ところで「shellapi.h」の内容はご覧になっているのでしょうか?ヘッダの内容はよく目を通しておかないと、これから別のことでもっと大変になるのではないでしょうか?是非、目を通されることをお勧めします。このヘッダに限りませんが。


kaoaru  2009-04-14 06:15:40  No: 69992

>ヘッダの指定だけではリンクのところで「shell32.lib」を指定しておかないとエラーが出ると思います。

というのは、VC++6でしたら、プロジェクト->設定で出てくるところでリンクのタブを見てください。プロジェクトオプションの中に「shell32.lib」があればいいのです。(久しぶりにVCを起動して確認してみました)


pen  2009-04-14 18:46:55  No: 69993

System.Diagnostics.Process.Startを使ったら、希望道理に動きました。
皆さん有難うございます。
大変助かりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加