如何使用sendmessage(C#)将退格发送到cmd.exe
我正在尝试将击键发送到我从应用程序启动的cmd.exe。这样做,我可以发送所有键盘字符,但如果我尝试发送退格,它似乎不会生效。以下是将消息发送到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#应
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代码吗
比尔
Rahulsendinput的问题在于它要求控制台应用程序位于前台。但我实际上是将其隐藏起来,并捕获其输入和输出(也就是说,KeyCode是0x8,与BS的ascii码相匹配