2009-11-13 32 views
3

我試圖發送鍵擊,我從我的應用程序啓動cmd.exe送退格。這樣做,我可以發送所有的鍵盤字符,但如果我嘗試發送Backspace,它似乎不起作用。以下是代碼片段要發送消息給CMD.EXE:如何使用SendMessage函數(C#)來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的最佳方式是什麼?

在此先感謝

回答

0

使用ASCII代碼: 退格 - > OCT爲0x10,炭 'BS'

+0

與sendinput的問題是,它需要的控制檯應用程序是在前臺。但我實際上保持隱藏並捕獲輸入和輸出。 :( 此外e.KeyCode是0x8中,與BS的ASCII碼匹配 – Murali 2009-11-13 20:00:38

1
string msg = "Hello Cmd";

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

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

上述方法有助於你輸入任何字符在字符串中還考慮了CAPS和空間。

唯一的問題是我所面對的是如果u此前發送消息,並仍在處理然後有相同字符的字符串兩次類似的「通道」,然後輸入的字符串是香奈兒,而不是渠道。 我目前正在爲這個問題找到解決方案。

穆拉利u能與我有邀請碼分享你的代碼KEYDOWN和KEYUP。

BR,

拉胡爾