专注于一个程序并用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
。它是由一个可能点击另一个程序的用户运行的,所以它有问题,因为焦点可能被设置到另一个节目。
那么,如何将密钥专门发送到我的应用程序?
使用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都可以工作。