SendKeys 到特定程序而不是焦点

Omn*_*xel 4 c# sendkeys

我正在尝试使用 sendkeys,但将其发送到非重点程序。例如,我想使用 sendkeys 到记事本 - 无标题,而不是聚焦。对不起,如果不清楚,我会详细说明。我目前的代码是这样的:

        string txt = Regex.Replace(richTextBox3.Text, "[+^%~()]", "{$0}");

        System.Threading.Thread.Sleep(1000);
        SendKeys.Send(txt + "{ENTER}");
Run Code Online (Sandbox Code Playgroud)

如果我使用 SendMessage,有人愿意向我展示我应该做什么的例子吗?我没有找到任何我在网上找到的对我的问题非常有用的东西。

vbg*_*yny 6

我从以前的 SO answer 中找到的以下代码。PostMessage API 将向特定的 Windows 句柄发送 Windows 消息。下面的代码将导致针对 Internet Explorer 的所有实例触发 key down 事件,而不提供焦点,模拟按下 F5 键。可以在此处找到其他密钥代码列表。

static class Program
{
    const UInt32 WM_KEYDOWN = 0x0100;
    const int VK_F5 = 0x74;

    [DllImport("user32.dll")]
    static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);

    [STAThread]
    static void Main()
    {
        while(true)
        {
            Process [] processes = Process.GetProcessesByName("iexplore");

            foreach(Process proc in processes)
                PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_F5, 0);

            Thread.Sleep(5000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)