我正在尝试使用sendkeys,但将其发送到非重点程序。例如,我想使用sendkeys到“记事本-无标题”,而无需重点关注。抱歉,如果不清楚,我会详细说明。我当前的代码是这样的:

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

        System.Threading.Thread.Sleep(1000);
        SendKeys.Send(txt + "{ENTER}");


如果我使用SendMessage,有人愿意给我看我应该怎么做的例子吗?我发现我在网上找不到对我的问题非常有用的任何东西。

最佳答案

我从previous SO answer找到以下代码。 PostMessage API将Windows消息发送到特定的Windows句柄。下面的代码将导致对Internet Explorer的所有实例触发键按下事件,而不会产生焦点,从而模拟了按下F5键的情况。可以在here中找到其他键代码的列表。

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);
        }
    }
}

07-28 02:55
查看更多