虚拟按键在C#窗口中按

时间:2010-08-18 23:32:20

标签: c# postmessage

嘿,我正在尝试在记事本中键入一条消息而不必将其作为我的焦点窗口(前景窗口)。

这是我到目前为止所做的:

    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]

    private void button2_Click(object sender, EventArgs e)
    {
            Process[] processes = Process.GetProcessesByName("Notepad");

            foreach (Process proc in processes)
                PostMessage(proc.MainWindowHandle, VK_TAB, VK_S, 0);

    }

但这并没有将S输入记事本。当我使用VK_F5时,它会显示日期/时间,当我使用显示帮助窗口的VK_F1时,它不会输入s。

我考虑过使用SendKey,但这需要我定位记事本。

任何帮助都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

如果您使用VK_F5时插入日期,则表示发送消息程序正在运行。

问题是消息的目的地,您是将消息发送到记事本窗口句柄,

如果要在文本区域中写入密钥,则需要获取记事本应用程序的文本区域控件的句柄并将消息发送给它