我想通过键盘上的一个按键如,F1,F2,来实现程序的一个功能,但是我现在运行的是别的程序。
就好像在干别的事的时候按下ctrl+z就可以弹出QQ的窗口一样
这样的功能该如何实现呢

解决方案 »

  1.   

    如何使用,能详细一点么?SDK下的
      

  2.   

    使用RegisterHotKey注册对应的热键,在消息处理函数中处理此热键即可。函数说明:
    BOOL RegisterHotKey(
      HWND hWnd,         // handle to window
      int id,            // hot key identifier
      UINT fsModifiers,  // key-modifier options
      UINT vk            // virtual-key code
    );不很清楚的话,查下RegisterHotKey的使用。
      

  3.   

    qq的那个截图都是系统热键实现的VC系统热键的使用
      

  4.   

    #define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
    #define KEY_UP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
    我都是用这个宏
      

  5.   

    注册系统热键,比较轻松一点。如果用钩子的话,有一点不好,全局钩子,对系统的影响比较大,而且杀毒软件 对 Hook 也比较敏感。
      

  6.   

    正常使用的情况下, 注册热键和全局钩子可以解决问题, 具体怎么用查查msdn或google一下就知道了.
    (
    顺便问一下, 你是不是玩游戏想偷懒, 想用热键激活自己弄的辅助性小工具, 比如按键精灵之类的?
    现在的网络游戏都有防外挂系统的, 即使没有拦截热键激活工具这一步, 之后的其他功能, 比如键盘鼠标的IO在NP监视下面也不能顺利运行的.
    还有就是QQ我只知道它有自己的IO驱动, 如npkcrypt.sys, 具体它是怎么实现的没有研究过.
    )
      

  7.   

    RegisterHotKey就ok了
    不需要hook那么麻烦
    代码送上
    http://www.vckbase.com/code/downcode.asp?id=550
      

  8.   

    #define hotkeyid_exit 2696
    在OnInitDialog 裡面加行這行
    ::RegisterHotKey(this->m_hWnd,hotkeyid_exit,MOD_ALT,'X');//alt+x然後響應 OnHotKey 這個FUNCTION
    裡面檢查是不是這個組合鍵,是就做對應的CODE在OnDestory 裡面要註銷這個::UnregisterHotKey(this->m_hWnd,hotkeyid_exit);