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

PostMessagePInvoke を使用して呼び出します。

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

プロセスMainWindowHandleを最初の引数として、2 番目の引数として渡します。ここで仮想キー コードの完全なリストを0x0D参照してください。最後の 2 つの引数として渡すことができると確信しています。IntPtr.Zero

PostMessage は、現在フォーカスされているウィンドウに関係なく機能します。

于 2013-07-05T21:28:39.660 に答える