如何使用sendmessage(C#)将退格发送到cmd.exe

如何使用sendmessage(C#)将退格发送到cmd.exe,c#,stdin,cmd,sendmessage,C#,Stdin,Cmd,Sendmessage,我正在尝试将击键发送到我从应用程序启动的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。这样做,我可以发送所有键盘字符,但如果我尝试发送退格,它似乎不会生效。以下是将消息发送到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的最佳方式是什么

提前感谢

您将不得不p/Invoke,因为退格是由键盘驱动程序直接处理的。

使用ascii代码: 退格-->OCT 0x10,字符“BS”

string msg=“Hello Cmd”

inti=0

对于(i=0;i

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

上面的方法可以帮助您输入字符串中的任何字符,还可以考虑大写和空格

唯一的问题是我所面临的是,如果你以前发送消息,它仍然在处理,那么一个字符串有两个相同的字符,像“频道”,然后字符串输入是香奈儿,而不是频道。 我目前正在寻找解决这个问题的方法

Murali你能和我分享你的KeyCode的KEYDOWN和keydup代码吗

比尔


Rahul

sendinput的问题在于它要求控制台应用程序位于前台。但我实际上是将其隐藏起来,并捕获其输入和输出(也就是说,KeyCode是0x8,与BS的ascii码相匹配