zoukankan      html  css  js  c++  java
  • 全局虚拟键盘的实现

    之前为这个问题困扰好久。

    问题:通过一个应用程序,点击某个按钮,使点击按钮之前光标所在的编辑框(任何一个应用程序)输入相应的字符。

    难点:在于焦点的切换

    答案:按下鼠标时采集窗口句柄;鼠标移动时,设置前置窗口;按下虚拟键盘按钮时,发送虚拟键盘消息

    关键函数:::GetForegroundWindow() 、::SetForegroundWindow(HWND hWnd)

    完成此功能涉及的函数:

    1)需要重载的函数

    void COnScreenKeyboardDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)

    void COnScreenKeyboardDlg::OnMouseMove(UINT nFlags, CPoint point)

    2)用到的Windows API

    GetForegroundWindow

    ModifyStyleEx

    SetForegroundWindow

    VkKeyScan

    SendInput


    完整代码


    不完美的地方:假设按下鼠标时所处的窗口有个控件可以输入字符,但是整个窗口不可以显示字符,切换到虚拟键盘时输入字符可以显示在控件上;再移动鼠标自动切换前置回来时,焦点不会自动落在上一次的控件上,而仅仅是整个窗口被前置

  • 相关阅读:
    STL next_permutation 全排列
    日期问题
    兰顿蚂蚁
    矩阵翻硬币
    数学问题-排列组合
    h5css3_03练习
    h5css3_03
    h5css3_02练习
    h5css3_02
    h5c3_01练习
  • 原文地址:https://www.cnblogs.com/james1207/p/3285520.html
Copyright © 2011-2022 走看看