繁体   English   中英

C#将箭头键发送到过程

[英]C# send arrow keys to a Proccess

我正在使用以下代码来运行程序,同时可以向其发送字母,空格等按键 \\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();

有任何想法吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM