C#SendMessage不知道TextBox ID

时间:2013-05-09 21:09:14

标签: c# external sendmessage sendkeys

我正在尝试将字符串发送到外部程序,但我只有一个示例程序,我将使用它,所以我不知道实际的textBox ID最终会是什么。显然这很成问题。

该程序的功能是允许用户单击一个按钮,该按钮将文本粘贴到外部程序上。这一切都可以正常使用SendKeys。然后我被要求创建热键,允许一个人进行击键,这相当于按下一个按钮。

我有热键,但是,当一个人使用热键时,它最终会多次发送消息。我把它缩小为sendKeys函数,我尝试使用SendMessage,但我不知道textBox ID,所以从我所知道的,它不是一个可行的选择。以下是我使用SendKeys代码的内容。

private void FocusProcess(string procName, string message, bool hotkeyed) {
    Process[] objProcesses = Process.GetProcessesByName(procName);
    if (autoPasteOn.Checked || toFrontOn.Checked) {
        foreach (Process currentProc in objProcesses) {
            IntPtr hWnd = IntPtr.Zero;
            hWnd = currentProc.MainWindowHandle;
            ShowWindowAsync(new HandleRef(null, hWnd), SW_RESTORE);

            SetForegroundWindow(hWnd);

            if (autoPasteOn.Checked) {
                SendKeys.Send(message);
            }

            if (toFrontOff.Checked) {
                SetForegroundWindow(mainProg);
                SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
            }
        }
    }
}   

它的工作原理是将其他进程拉到前面,发送消息,然后将其发送到后面。我正在使用SetWindowsHookEx库注册热键,它工作正常。唯一的问题是使用热键发送消息。它有效,但它做了很多次。我已经放置了支票,使其最多粘贴4次/秒。但它大约10-20次/秒。我已经变化了代码每四分之一只执行一次,但是sendkeys仍在搞乱。

0 个答案:

没有答案