3

我正在尝试将击键发送到从我的应用程序启动的 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# 应用程序发送到 cmd.exe 的标准输入的最佳方法是什么?

提前致谢

4

3 回答 3

1

您将不得不 P/Invoke SendInput()因为 Backspace 是由键盘驱动程序直接处理的。

于 2009-11-13T15:13:46.873 回答
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和KEYUP代码吗?

BR,

拉胡尔

于 2011-05-28T08:58:26.563 回答
0

使用 ascii 代码:退格 --> OCT 0x10, char 'BS'

于 2009-11-13T15:24:35.150 回答