C#将箭头键发送到进程

时间:2015-03-15 14:01:36

标签: c#

我正在使用以下代码来运行程序,而我可以将其按键发送给字母,空格为\n用于输入。但是我无法发送箭头键,因为它们没有ASCII值。

string yourApp = "C:\\program";
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.RedirectStandardInput = true;processInfo.UseShellExecute = false;
processInfo.WindowStyle = ProcessWindowStyle.Normal;
processInfo.FileName = "cmd.exe";
processInfo.WorkingDirectory = yourApp;
processInfo.Arguments = "/c abcdef";

Process cmd = Process.Start(processInfo);

cmd.StandardInput.Write(" "); // press space
cmd.StandardInput.Flush();

cmd.StandardInput.Write("\n"); // press enter
cmd.StandardInput.Flush();

cmd.StandardInput.Write("a"); // press a
cmd.StandardInput.Flush();

任何想法?

1 个答案:

答案 0 :(得分:0)

如果您的其他进程是一个窗口,您可以使用SendMessagePostMessage将箭头键事件消息放入另一个进程中使用的窗口的消息队列中。这将模拟其他进程中的实际键盘箭头键事件,而不是通过StandardInput。这不会是微不足道的。

PInvoke.net是一个很好的资源,可以为您必须使用的非托管Windows API查找必要的签名。您首先必须在其他进程中识别正确的Window句柄,然后初始化必要的事件参数并调用SendMessage(同步)或PostMessage(异步)。