現在、INIファイルに記述されたコマンドを終了同期をとって実行させるツールを作成しています。
CreateProcess()で実行してWaitForSingleObject()で同期をとっています。
しかし、コマンドに「 copy c:\test.txt c:\test2.txt」といったようなシステムコマンドを記述された場合には CreateProcess()では実行できないため、その場合は、system()で実行しています。
そうすると、system()で実行した場合には必ずコマンドプロンプトの画面が表示されてしまうのです。
現在はこれを表示させたくながために、システムコマンドを実行するEXEを作成し、それを使ってCreateProcess()で実行しています。
ただ、EXEが2本構成になってしまうので、なんとか1本にできないものかと考えています。
どなたかよい案がありましたら教えていただければと思います。
よろしくお願いします。
システムコマンドというのは,
コマンドインタプリタ(CMD.EXE or COMMAND.COM)の内部コマンドのことですか。
コマンドインタプリタごと起動してやればCreateProcessで実行できますよ。
そうです。
ただコマンドインタプリンタごと起動するとなると、OSの種類をみなきゃいけなくなりますよね…。
NT系はcmd.exe、95系はcommand.com でよいのでしょうか?
ん?
環境変数ComSpecを調べれば一発です。
ありがとうございます。
ComSpecで取得できるのは知りませんでした。
おかげで無事に解決できました。