Как отправить Backspace с помощью sendmessage (C #) для cmd.exe - PullRequest
3 голосов
/ 13 ноября 2009

Я пытаюсь отправить нажатия клавиш в cmd.exe, который я запускаю из моего приложения. При этом я могу отправить все символы клавиатуры, но если я попытаюсь отправить Backspace, это, похоже, не вступит в силу. Ниже приведен фрагмент кода для отправки сообщения cmd.exe:

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

Есть идеи, почему это не сработает? Как лучше всего отправить на стандартный ввод cmd.exe из приложения C #?

спасибо заранее

Ответы [ 3 ]

1 голос
/ 28 мая 2011

string msg = "Hello Cmd";

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

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

вышеупомянутый метод помогает вам вводить любой символ в строке, также считаются символы CAPS и пробел.

Единственная проблема в том, с чем я сталкиваюсь, если вы отправляете сообщение ранее, и оно все еще обрабатывает, тогда строка, имеющая один и тот же символ, в два раза больше, чем «канал», тогда введенная строка - это канал, а не канал. В настоящее время я нахожу решение этой проблемы.

Murali можете поделиться своим кодом со мной для KEYDOWN и KEYUP с KeyCode.

BR

Рахул

1 голос
/ 13 ноября 2009

Вам придется P / Invoke SendInput () , потому что Backspace обрабатывается драйвером клавиатуры напрямую.

0 голосов
/ 13 ноября 2009

используйте код ascii: Backspace -> OCT 0x10, символ 'BS'

...