输入字符串到指定的窗口

#define UPPERCASE 0X03

#define LOWERCASE 0X02

#define NUMBER  0x01

还有一个CanInput(vWk)就是判断是大写,小写还是数字,再返回指定的值,如UPPERCASE

void SendInputKeypress(CString str,HWND hWnd)
{
 CArray<INPUT,INPUT&> inputList;
 BYTE vWk;
 
 BOOL isShift=FALSE;
 for(int i=0;i<str.GetLength()*2;i+=2)
 {
  vWk=(BYTE)str.GetAt(i/2);
  isShift=this->CanInput(vWk);
  
  if(isShift==LOWERCASE)
  {
   vWk-=32;
  }
  if(isShift==UPPERCASE)
  {
   INPUT in;
   ZeroMemory(&in,sizeof(in));
   in.type=INPUT_KEYBOARD;
   in.ki.dwFlags=0;
   in.ki.wVk=VK_SHIFT;
   inputList.Add(in);
  }

  INPUT Keys[2];
  ZeroMemory(Keys,sizeof(Keys));
  Keys[0].type=Keys[1].type=INPUT_KEYBOARD;
  Keys[0].ki.wVk  = Keys[1].ki.wVk = vWk;
  Keys[1].ki.dwFlags = KEYEVENTF_KEYUP;  // THIS IS IMPORTANT
  inputList.Add(Keys[0]);
  inputList.Add(Keys[1]);

  if(isShift==UPPERCASE)
  {
   INPUT in;
   ZeroMemory(&in,sizeof(in));
   in.type=INPUT_KEYBOARD;
   in.ki.dwFlags=KEYEVENTF_KEYUP;
   in.ki.wVk=VK_SHIFT;
   inputList.Add(in);
  }
 }
 LPINPUT AllKey=new INPUT[inputList.GetCount()];
 for(int i=0;i<inputList.GetCount();i++)
 {
  AllKey[i]=inputList.GetAt(i);
 }
 
 SetForegroundWindow(hWnd);
 while(!::SendInput((UINT)inputList.GetCount(), AllKey, sizeof(INPUT)))
 {
  SetForegroundWindow(hWnd);
 }
    delete[] AllKey;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值