- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PATHを効かせてコマンド実行したい)
VC++6.0,MFCでPATHを効かせてコマンド実行する方法
このQ&Aのポイント
- VC++6.0,MFCでコンソールコンパイラランチャのアプリケーションを作っています。コンパイラのパスを設定する方法と、パラメータ付きでコンパイルコマンドを実行する方法について教えてください。
- ShellExecuteを使った方法では、1.のパス設定が2回目のShellでは無効になってしまいます。vc++6.0,MFCでパスを効かせてコマンドを実行する良い方法はありますか?
- 質問者はVC++6.0,MFCでコンソールコンパイラランチャのアプリケーションを作成中で、コンパイラのパス設定とパラメータ付きでのコンパイルコマンド実行方法について困っています。ShellExecuteを使用する方法ではパス設定が2回目のShell実行時に無効になってしまうため、別の良い方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じかなあ。 PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si, 0, sizeof(STARTUPINFO)); si.cb = sizeof(STARTUPINFO); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_SHOWNORMAL; char* cmd = "コマンドの引数"; // "/k ..." って感じの char* env = "PATH=XXXXX"; CreateProcess("command.com", cmd, NULL, NULL, FALSE, 0, env, NULL, &si, &pi); # 実際に動かしたわけではないので、「自信なし」としておきます (^^;
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
回答No.1
CreateProcess() API を使えば、7番目の引数で環境変数を指定できます。
質問者
お礼
アドバイスありがとうございました。 お礼が遅れ、申し訳ありませんでした。 実はまだ、実現出来てないのですが、何とかがんばってやってみます。
質問者
補足
早速の回答ありがとうございます。 CreateProcessでやってみます。 うまく出来たらまた報告いたします。
お礼
アドバイスありがとうございました。 お礼が遅れ、申し訳ありませんでした。 実はまだ、実現出来てないのですが、何とかがんばってやってみます。
補足
わざわざコードまで教えていただきありがとうございます。 しかし苦戦しております。 いろいろやってみたんですけどPATHが変わってくれません。(ToT) char* cmd = "/k PATH"; char* env = "PATH=c:\\data"; CreateProcess("command.com",cmd, NULL, NULL, FALSE, 0, env, NULL, &si, &pi); ・・・だとDos窓が開きませんでした CreateProcess(NULL,"command.com /k path ", NULL, NULL, FALSE, 0, env, NULL, &si, &pi); にしてみたところDos窓が起動しますが表示されるPATHはデフォルトのままです。 なにがいけないのでしょうか? いろいろ検索してみたのですがCreateProcessでも環境変数まで設定しているのが見つかりません。 どうか宜しくお願いします。