Windows コマンド プロンプトを制御する C プログラムを作成しようとしています。たとえば、cmd プロンプトを開き、特定のディレクトリ (例: C:/Program Files/...) に移動し、そのフォルダで exe を実行します。
これはCプログラミングでできますか?もしそうなら、どのように?これまでのところ、cmd プロンプトを開くための system("cmd.exe") しか認識していません。cmdプロンプトをさらに操作するにはどうすればよいですか?
ありがとう。
Windows コマンド プロンプトを制御する C プログラムを作成しようとしています。たとえば、cmd プロンプトを開き、特定のディレクトリ (例: C:/Program Files/...) に移動し、そのフォルダで exe を実行します。
これはCプログラミングでできますか?もしそうなら、どのように?これまでのところ、cmd プロンプトを開くための system("cmd.exe") しか認識していません。cmdプロンプトをさらに操作するにはどうすればよいですか?
ありがとう。
これはあまり移植性がありません。system
呼び出しはしばしば嫌われますが、あなたの質問に答えるために、system
関数はあなたが使用しようとしているコマンドで動作します.
例えば:
system("notepad.exe my_file.txt");
system("del my_file.txt");
system("pause");
これにより、メモ帳で my_file.txt というファイルが開き、削除してプログラムを一時停止します。
繰り返しますが、これは移植性がありません。これは、Windows オペレーティング システムに固有のものです。実際、Windows のすべてのリリースで動作することが保証されているとは思いません。(それについて私を引用しないでください。)
トピックについて:「CreateProcess」を介してcmdを開始し、ウィンドウメッセージ(「SendMessage」)を介してキー入力を送信できます。
どうやってやりたいかを考え直すべきだと思います。コマンドプロンプトは、Windowsで何かを行うための一種のAPIベースではありません。これは、独自のプログラムを作成せずに、物事を実行して情報を取得するためのツールです。独自のプログラムを作成する場合は、WinAPIを直接使用する必要があります。
開始するには、「winapi[やりたいことは何でも]」をグーグルで検索できます。あなたの例では「winapistartexecutable」であり、「CreateProcess」や「ShellExecute」のような関数があります。
おそらくここで誤解があるかもしれませんが (もしそうなら、お詫びします)、「cmd プロンプトをさらに操作する」ための標準的な方法はコマンドライン コマンドを使用することであり、「Windows の cmd プロンプトを制御するプログラムを作成する」ための標準的な方法は次のとおりです。バッチファイル経由。たとえば、次のバッチ ファイルは、cmd プロンプトを開き (エクスプローラーでダブルクリックして実行した場合)、特定のディレクトリ (C:/Program Files/) に移動し、そのフォルダーで exe を実行します。
@echo off
cd "C:/Program Files/"
nameOfTheProgram.exe