/*private void button5_Click(object sender, EventArgs e) * { * _keyboardHook = new KeyboardHookLib(); * _keyboardHook.InstallHook(this.OnKeyPress); * * //启用客户端输入法的时候,自动让客户端输入法的输入窗口聚焦 * FindWindow.SetForegroundWindow(mainHandle); * txtMonitor.Focus(); * }*/ /*private void button6_Click(object sender, EventArgs e) * { * //解除客户端键盘监控钩子 * if (_keyboardHook != null) * { * _keyboardHook.UninstallHook(); * } * * //启用服务端输入法时,发消息到服务端 * SendMessage("使用服务端输入法!"); * }*/ /// <summary> /// 客户端键盘捕捉事件. /// </summary> /// <param name="hookStruct">由Hook程序发送的按键信息</param> /// <param name="handle">是否拦截</param> public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设不拦截任何键 //如果前置窗口时主窗口,则不拦截 if (FindWindow.GetForegroundWindow() == mainHandle) { if (tmpCount == 0) { tmpCount++; FindWindow.keybd_event((Keys)hookStruct.vkCode, 0, 0, 0); handle = true; } return; } //如果键A~Z if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z && FindWindow.GetForegroundWindow() != mainHandle) { tmpCount = 0; lastHandle = FindWindow.GetForegroundWindow(); //A~Z键时,focus隐藏的主窗口 FindWindow.SetForegroundWindow(mainHandle); txtMonitor.Focus(); tmpCount = 0; handle = true; } }
private void UseClientInput() { 使用客户端输入法ToolStripMenuItem.Checked = true; 使用服务端输入法ToolStripMenuItem.Checked = false; //_keyboardHook = new KeyboardHookLib(); _keyboardHook.InstallHook(this.OnKeyPress); //启用客户端输入法的时候,自动让客户端输入法的输入窗口聚焦 FindWindow.SetForegroundWindow(mainHandle); txtMonitor.Focus(); }
public void SetLastWindowFocus() { FindWindow.SetForegroundWindow(lastHandle); }