3

アプリから起動する cmd.exe にキーストロークを送信しようとしています。そうすることで、すべてのキーボード文字を送信できますが、バックスペースを送信しようとしても効果がないようです。以下は、cmd.exe にメッセージを送信するためのコード スニペットです。

SendMessage((int)shell.MainWindowHandle, WM_KEYDOWN, ((int)e.KeyCode), 0);
SendMessage((int)shell.MainWindowHandle, WM_KEYUP, ((int)e.KeyCode), 0);

なぜこれがうまくいかないのですか?C# アプリから cmd.exe の stdin に送信する最良の方法は何ですか?

前もって感謝します

4

3 に答える 3

1

string msg = "Hello Cmd";

int i=0; for (i=0; i < msg.Length ; i++)

SendMessage(cmdHwnd, WM_CHAR, (int)msg[i], 0);

上記の方法は、文字列に任意の文字を入力するのに役立ちます。大文字とスペースも考慮されます。

唯一の問題は、私が直面していることです。以前にメッセージを送信し、それがまだ処理されていて、「チャネル」のように同じ文字を 2 回含む文字列が入力された場合、入力された文字列はチャネルではなくシャネルです。現在、この問題の解決策を見つけています。

Murali は、KeyCode を使用した KEYDOWN および KEYUP のコードを私と共有できます。

BR、

ラフル

于 2011-05-28T08:58:26.563 に答える
1

Backspace はキーボード ドライバーによって直接処理されるため、P/Invoke SendInput()を実行する必要があります。

于 2009-11-13T15:13:46.873 に答える
0

ascii コードを使用: backspace --> OCT 0x10, char 'BS'

于 2009-11-13T15:24:35.150 に答える