예제 #1
0
        /*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;
            }
        }
예제 #2
0
        private void UseClientInput()
        {
            使用客户端输入法ToolStripMenuItem.Checked = true;
            使用服务端输入法ToolStripMenuItem.Checked = false;

            //_keyboardHook = new KeyboardHookLib();
            _keyboardHook.InstallHook(this.OnKeyPress);

            //启用客户端输入法的时候,自动让客户端输入法的输入窗口聚焦
            FindWindow.SetForegroundWindow(mainHandle);
            txtMonitor.Focus();
        }
예제 #3
0
 public void SetLastWindowFocus()
 {
     FindWindow.SetForegroundWindow(lastHandle);
 }