我正在尝试向我从应用启动的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);
知道为什么这不起作用?从C#app发送到cmd.exe的stdin的最佳方法是什么?
提前致谢
答案 0 :(得分:1)
您必须P / Invoke SendInput(),因为Backspace由键盘驱动程序直接处理。
答案 1 :(得分:1)
string msg = "Hello Cmd";
int i=0;
for (i=0; i < msg.Length ; i++)
SendMessage(cmdHwnd, WM_CHAR, (int)msg[i], 0);
上述方法可以帮助您输入字符串中的任何字符,同时也考虑CAPS和空格。
唯一的问题是我面临的问题是,如果您之前发送消息并且它仍在处理,那么具有相同字符的字符串两次就像“频道”那么输入的字符串是chanel而不是频道。 我目前正在为这个问题找到解决方案。
Murali可以和我分享KEYDOWN的代码和KeyCode的KEYUP。
BR,
的Rahul
答案 2 :(得分:0)
使用ascii代码: 退格 - &gt; OCT 0x10,char'BS'