我正在尝试将字符串发送到外部程序,但我只有一个示例程序,我将使用它,所以我不知道实际的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仍在搞乱。