• ベストアンサー
※ 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実行時に無効になってしまうため、別の良い方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.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); # 実際に動かしたわけではないので、「自信なし」としておきます (^^;

ystk
質問者

お礼

アドバイスありがとうございました。 お礼が遅れ、申し訳ありませんでした。 実はまだ、実現出来てないのですが、何とかがんばってやってみます。

ystk
質問者

補足

わざわざコードまで教えていただきありがとうございます。 しかし苦戦しております。 いろいろやってみたんですけど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でも環境変数まで設定しているのが見つかりません。 どうか宜しくお願いします。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

CreateProcess() API を使えば、7番目の引数で環境変数を指定できます。

ystk
質問者

お礼

アドバイスありがとうございました。 お礼が遅れ、申し訳ありませんでした。 実はまだ、実現出来てないのですが、何とかがんばってやってみます。

ystk
質問者

補足

早速の回答ありがとうございます。 CreateProcessでやってみます。 うまく出来たらまた報告いたします。

関連するQ&A