软键盘

 BOOL IsExtenKey(UINT vk_Code)
{
  BOOL bRet = FALSE;
  switch(vk_Code)
  {
  default:
    break;
  case(VK_NUMLOCK):
  case(VK_CAPITAL):
  case(VK_SCROLL):
  case(VK_CONTROL):
  case(VK_LCONTROL):
  case(VK_RCONTROL):
  case(VK_SHIFT):
  case(VK_LSHIFT):
  case(VK_RSHIFT):
  case(VK_MENU):
  case(VK_LMENU):
  case(VK_RMENU):
    bRet |= TRUE;
  }
  return bRet;
}

BOOL SimKeyboard(UINT vkCode, UINT sCode/*=-1*/) //模拟键盘
{
  if(sCode == -1)
    sCode = MapVirtualKey( vkCode, 0); //map virtual keybo to scan code 
  DWORD dwFlage = 0;
  if(IsExtenKey(vkCode))
    dwFlage |= KEYEVENTF_EXTENDEDKEY;
  keybd_event( vkCode, sCode, dwFlage,  0 );// Simulate a key press
  keybd_event( vkCode, sCode, dwFlage | KEYEVENTF_KEYUP,  0 );// Simulate a key up
  return (true);
}

BOOL SimKeyboard(UINT vkCode, UINT sCode/*=-1*/) //模拟键盘
{
  INPUT kbInput[2] = {0};
  kbInput[0].type = INPUT_KEYBOARD; //键盘按下
  kbInput[0].ki.wVk = vkCode; //
  kbInput[0].ki.wScan = (sCode == -1)? MapVirtualKey( vkCode, 0) : sCode ; //map virtual keybo to scan code 
  kbInput[0].ki.dwFlags = 0;
  if(IsExtenKey(vkCode))
    kbInput[0].ki.dwFlags |= KEYEVENTF_EXTENDEDKEY;
  if(sCode != -1)
    kbInput[0].ki.dwFlags |= KEYEVENTF_SCANCODE;

  kbInput[1] = kbInput[0]; //键盘抬起
  kbInput[1].ki.dwFlags |= KEYEVENTF_KEYUP;
 
  return SendInput(2, kbInput, sizeof(INPUT));
}

BOOL SimKeyboardPress(UINT vkCode, UINT sCode=-1) //模拟键盘按下  
{  
  if(sCode == -1)  
    sCode = MapVirtualKey( vkCode, 0); //map virtual keybo to scan code    
  DWORD dwFlage = 0;   
  if(IsExtenKey(vkCode))  
    dwFlage |= KEYEVENTF_EXTENDEDKEY;  
  keybd_event( vkCode, sCode, dwFlage,  0 );// Simulate a key press 
  return (true);  
}

BOOL SimKeyboardRelease(UINT vkCode, UINT sCode=-1)//模拟键盘抬起
{
  if(sCode == -1)  
    sCode = MapVirtualKey( vkCode, 0); //map virtual keybo to scan code    
  DWORD dwFlage = KEYEVENTF_KEYUP;   
  if(IsExtenKey(vkCode))  
    dwFlage |= KEYEVENTF_EXTENDEDKEY;  

  keybd_event( vkCode, sCode, dwFlage,  0 );// Simulate a key up  
  return (true);  

BOOL SimKeyboardClick(UINT vkCode, UINT sCode=-1)//模拟敲击键盘
{
  return SimKeyboardPress(vkCode, sCode)
    && SimKeyboardRelease(vkCode, sCode);
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值