9

Windows アプリケーションからプロセスを開始しています。F4ボタンを押すと、そのプロセスでキーを押すことをシミュレートしたいと思います。どうやってやるの?

F4[後で編集]フォームでキーを押すことをシミュレートしたくありませんが、その過程で開始しました。

4

3 に答える 3

12

System.Windows.Forms.SendKeys.Send("{F4}")を使用できます。

于 2009-05-05T16:13:07.120 に答える
11

F4キーを別のプロセスに送信するには、そのプロセスをアクティブ化する必要があります

http://bytes.com/groups/net-c/230693-activate-other-processは次のことを示唆しています。

  1. Process.Startによって返されるProcessクラスインスタンスを取得します
  2. クエリProcess.MainWindowHandle
  3. 管理されていないWin32API関数「ShowWindow」または「SwitchToThisWindow」を呼び出します

その後、リードがこのプロセスにキーストロークを送信するように提案したように、System.Windows.Forms.SendKeys.Send( "{F4}")を使用できる場合があります。

編集:

以下のコード例はメモ帳を実行し、それに「ABC」を送信します。

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace TextSendKeys
{
    class Program
    {
        [DllImport("user32.dll")]
        static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

        static void Main(string[] args)
            {
                Process notepad = new Process();
                notepad.StartInfo.FileName = @"C:\Windows\Notepad.exe";
                notepad.Start();

                // Need to wait for notepad to start
                notepad.WaitForInputIdle();

                IntPtr p = notepad.MainWindowHandle;
                ShowWindow(p, 1);
                SendKeys.SendWait("ABC");
            }
    }
}
于 2009-05-05T16:26:39.160 に答える
1

ウィンドウをフォーカスし (SetForegroundWindow WINAPI)、Windows フォーム SendKeys を使用して F4 を送信できます。

于 2009-05-05T17:55:32.460 に答える