我正在使用以下代码来运行程序,而我可以将其按键发送给字母,空格为和
\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();
任何想法?
答案 0 :(得分:0)
如果您的其他进程是一个窗口,您可以使用SendMessage
或PostMessage
将箭头键事件消息放入另一个进程中使用的窗口的消息队列中。这将模拟其他进程中的实际键盘箭头键事件,而不是通过StandardInput
。这不会是微不足道的。
PInvoke.net是一个很好的资源,可以为您必须使用的非托管Windows API查找必要的签名。您首先必须在其他进程中识别正确的Window句柄,然后初始化必要的事件参数并调用SendMessage
(同步)或PostMessage
(异步)。