3

我使用此代码在控制台中执行某些操作:

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. 它由可能单击另一个程序的用户运行,因此它有问题,因为焦点可能设置到另一个程序。

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

4

1 回答 1

-1

PostMessage使用 PInvoke调用:

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

将 process'MainWindowHandle作为第一个参数传递,0x0D作为第二个参数传递 - 请参阅此处的虚拟键代码的完整列表,我很确定您可以只传递IntPtr.Zero最后两个参数。

无论当前聚焦哪个窗口,PostMessage 都有效。

于 2013-07-05T21:28:39.660 回答