专注于一个程序并用c做一些事情

本文关键字:于一个 程序 专注 | 更新日期: 2023-09-27 18:21:09

我用这段代码在控制台中做一些事情:

System.Diagnostics.Process Process = new System.Diagnostics.Process();
Process.StartInfo.FileName = @"MyDir'MyApp.exe";
Process.StartInfo.WorkingDirectory = @"MyDir'MyApp.exe";
Process.Start();
System.Threading.Thread.Sleep(10000);
System.Windows.Forms.SendKeys.SendWait("{ENTER}");
Process.Kill();

它正在打开一个程序,然后使用SendKeys。它是由一个可能点击另一个程序的用户运行的,所以它有问题,因为焦点可能被设置到另一个节目。

那么,如何将密钥专门发送到我的应用程序?

专注于一个程序并用c做一些事情

使用PInvoke:调用PostMessage

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true)]
static extern bool PostMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

将进程"MainWindowHandle"作为第一个参数传递,将0x0D作为第二个参数传递——请参阅此处的虚拟密钥代码的完整列表,我确信您可以将IntPtr.Zero作为最后两个参数传递。

无论当前关注的窗口是什么,PostMessage都可以工作。