ShowDialogで参照した実行ファイルを起動する方法がよくわかりません。
関数名(選択したファイルを格納した変数);
みたいな形で実行する方法ありませんか?
ShellExecute/ShellExecuteEx でも使えばいいんじゃないかしら。
http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
私もHINSTANCE ShellExecute(hwnd, lpszOp, lpszFile, lpszParams, lpszDir, wShowCmd)が真っ先に浮かびますが、起動を掛けることができる程度に考えてください。私の場合にはちゃんと起動できたかどうかは全てのウィンドウハンドルを列挙してから存在を調べて確認する方法をとっています。
他にもやりかたがあると思いますがこれが一番簡単だと思っています。2重起動しちゃいけないのに起動してしまうプログラムもありますし...。
fatal error C1083: include ファイルを開けません。'shell32.lib': No such file or directory
とメッセージが出てビルドがうまくいきません。上記のメッセージは、どう解釈したらよいのでしょうか?
>ShowDialog
ということは Windows フォーム アプリケーション?
(環境は必ず明記すべき。)
だったら
System.Diagnostics.Process.Start
を使うほうが普通でしょう。
shell32.libはインポートライブラリですから,リンクするものです。
#includeするものではありません。
#includeするのは,項目「ヘッダ」に書いてあるshellapi.hです。
ヘッダの指定だけではリンクのところで「shell32.lib」を指定しておかないとエラーが出ると思います。
ところで「shellapi.h」の内容はご覧になっているのでしょうか?ヘッダの内容はよく目を通しておかないと、これから別のことでもっと大変になるのではないでしょうか?是非、目を通されることをお勧めします。このヘッダに限りませんが。
>ヘッダの指定だけではリンクのところで「shell32.lib」を指定しておかないとエラーが出ると思います。
というのは、VC++6でしたら、プロジェクト->設定で出てくるところでリンクのタブを見てください。プロジェクトオプションの中に「shell32.lib」があればいいのです。(久しぶりにVCを起動して確認してみました)
System.Diagnostics.Process.Startを使ったら、希望道理に動きました。
皆さん有難うございます。
大変助かりました。
ツイート | ![]() |