Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101301
  • 博文数量: 16
  • 博客积分: 1435
  • 博客等级: 上尉
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-15 18:51
个人简介

Software

文章分类

全部博文(16)

文章存档

2012年(1)

2011年(1)

2010年(2)

2009年(1)

2008年(6)

2007年(5)

我的朋友

分类: C/C++

2007-06-25 17:34:40

有时在进入程序后,我们需要设键盘输入为大写(Caps Lock)或(Num Lock)数字键盘时,
可以利用代码代劳。
 
/*
 Set the Capslock, Numlock, Scrolllock on/off
 --------------------------------------------
 key  : 'C'=Cap Lock, 'N'=Num Lock, 'S'=Scroll Lock
 bState : TRUE=on, FALSE=off
*/
void SetKeyLock(char key, BOOL bState)
{
 BYTE vk_key;
 switch(key)
 {
  case 'C':
  case 'c': vk_key=VK_CAPITAL; //Caps Lock
    break;
  case 'N':
  case 'n': vk_key=VK_NUMLOCK; //Num Lock
    break;
  case 'S':
  case 's': vk_key=VK_SCROLL;  //Scroll Lock
    break;
  default: return;    //ignore other keys
 }
 BYTE keyState[256];
    GetKeyboardState((LPBYTE)&keyState);
    if( (bState && !(keyState[vk_key] & 1)) ||
        (!bState && (keyState[vk_key] & 1)) )
    {
    // Simulate a key press
       keybd_event( vk_key,
                    0x45,
                    KEYEVENTF_EXTENDEDKEY | 0,
                    0 );
    // Simulate a key release
       keybd_event( vk_key,
                    0x45,
                    KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                   0);
    }
}
用法:
 
 SetKeyLock('C',TRUE);   //Set Caps lock on
 SetKeyLock('N',TRUE);   //Set Num lock on
 SetKeyLock('S',FALSE);  //Set Scroll off
 
 
注:这个函数只适合Windows系统。
阅读(2232) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~