My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 例子
NoMFC编程03-检测全局键盘
作者:temp77 时间:2001-10-15 10:19 出处:互联网 责编:MyFAQ
              摘要:NoMFC编程03-检测全局键盘

 

    ( 如果没有输入焦点,如何检测键盘的状态? )

    有一个 "土" 办法可以做到,可是,它拿回来的东西未必合用? 因为这个办法检测全局的键盘状态 ( 甚至鼠标按钮 ),你实在分不清是不是对你自己程序的控制输入。

  · 源程序如下:


// File Name: WinMain.cpp

 //指定下一句说明该程序与 MFC 无关,可以加快编译速度
 #define WIN32_LEAN_AND_MEAN   // Say No to MFC !!
   #include <windows.h>

 


// Name: WinMain()  // 程序入口
// ------ ---------- ----------- ---------
int WINAPI WinMain( HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine, int nCmdShow )
{

  MessageBox( NULL , "If you want to Exit\n\n       Press ESC." ,
                     " By `海风 " , MB_OK | MB_TOPMOST );

  while (1)
 {

  // 以下测试是检测按键状态,如果是 ESC 就退出

  if (GetAsyncKeyState( VK_ESCAPE ) & 0x8000)  // 源程序精华所在

   { MessageBox( NULL , "成功退出!" ,  " - Congratulate !" , MB_OK | MB_TOPMOST );
    ExitProcess( NULL);
    }   // End of if (GetAsy ...

  Sleep(5); // 做优化用, 其实用 1 就可以达到比较少的 CPU 占用
   }

  MessageBox(NULL,"If you Read this message,that means faile the test."," `海风 ",MB_OK);
    return NULL;
   }

 

  · 本源程序精华在   if (GetAsyncKeyState( VK_ESCAPE ) & 0x8000)  它检测的是 ESC 键,由虚拟键码 VK_ESCAPE 指定。

  · 如果想指定其它键钮也可以,但是你必须有其他的虚拟键码。以下方法虽是旁门左道,但是可以让你快速找到你需要的东西。

    (刚才的源程序) 在 VC 环境中选中 VK_ESCAPE ,让它反蓝。然后在上面点击右键,选择 " Go to Definition of VK_ESCAPE ",(选 yes ) 然后会去到如下面的定义的文件中(WINUSER.H)。  看到 VK_ESCAPE 代表的常数了吗?  里面还有其他的虚拟键码,如 VK_LSHIFT 代表的是左面的 Shift 键 ( 甚至鼠标左键也有 ),自己研究一下吧。


   好了,正如本文开头介绍,这是个 "土" 办法,它连别人程序的按键输入也捕获了。

    是不是很烦 ?    `海风  2002年10月03日 am 11:15              

——————————————————————————
附自我简介:

特    征:未到而立,刚到米七,语音略带磁性,性格开朗,有点顽皮,有点小聪明,准完美主义者 …
最 大 嗜 好 : 玩电子游戏 ( 梦想开发 Oni 连线版 )
爱用的编译器: VC + DX_SDK + api ( 戏称VC++ )
近来常挂嘴边: 大家都是斯文人,何必动手 …
目前喜欢的歌: 林凡 - 再见西雅图

 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有