3

Windows コマンド プロンプトを制御する C プログラムを作成しようとしています。たとえば、cmd プロンプトを開き、特定のディレクトリ (例: C:/Program Files/...) に移動し、そのフォルダで exe を実行します。

これはCプログラミングでできますか?もしそうなら、どのように?これまでのところ、cmd プロンプトを開くための system("cmd.exe") しか認識していません。cmdプロンプトをさらに操作するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

2

これはあまり移植性がありません。system呼び出しはしばしば嫌われますが、あなたの質問に答えるために、system関数はあなたが使用しようとしているコマンドで動作します.

例えば:

system("notepad.exe my_file.txt");
system("del my_file.txt");
system("pause");

これにより、メモ帳で my_file.txt というファイルが開き、削除してプログラムを一時停止します。

繰り返しますが、これは移植性がありません。これは、Windows オペレーティング システムに固有のものです。実際、Windows のすべてのリリースで動作することが保証されているとは思いません。(それについて私を引用しないでください。)

于 2013-03-17T18:32:37.080 に答える
1

トピックについて:「CreateProcess」を介してcmdを開始し、ウィンドウメッセージ(「SendMessage」)を介してキー入力を送信できます。

どうやってやりたいかを考え直すべきだと思います。コマンドプロンプトは、Windowsで何かを行うための一種のAPIベースではありません。これは、独自のプログラムを作成せずに、物事を実行して情報を取得するためのツールです。独自のプログラムを作成する場合は、WinAPIを直接使用する必要があります。

開始するには、「winapi[やりたいことは何でも]」をグーグルで検索できます。あなたの例では「winapistartexecutable」であり、「CreateProcess」や「ShellExecute」のような関数があります。

于 2013-03-17T18:40:06.527 に答える
1

おそらくここで誤解があるかもしれませんが (もしそうなら、お詫びします)、「cmd プロンプトをさらに操作する」ための標準的な方法はコマンドライン コマンドを使用することであり、「Windows の cmd プロンプトを制御するプログラムを作成する」ための標準的な方法は次のとおりです。バッチファイル経由。たとえば、次のバッチ ファイルは、cmd プロンプトを開き (エクスプローラーでダブルクリックして実行した場合)、特定のディレクトリ (C:/Program Files/) に移動し、そのフォルダーで exe を実行します。

@echo off
cd "C:/Program Files/"
nameOfTheProgram.exe
于 2013-03-19T01:05:09.760 に答える