INPUT input_Copy[4] = {0};
input_Copy[0].type = input_Copy[1].type = input_Copy[2].type = input_Copy[3].type = INPUT_KEYBOARD;input_Copy[0].ki.wVk = input_Copy[3].ki.wVk = VK_CONTROL;
input_Copy[1].ki.wVk = input_Copy[2].ki.wVk = 'C';input_Copy[2].ki.dwFlags = input_Copy[3].ki.dwFlags = KEYEVENTF_KEYUP;input_Copy[0].ki.time = input_Copy[1].ki.time = GetTickCount();
Sleep(100);
input_Copy[2].ki.time = input_Copy[3].ki.time = GetTickCount();SendInput(sizeof(input_Copy)/sizeof(input_Copy[0]), input_Copy, sizeof(INPUT));写得不对吗???代码哪里出错了,麻烦高手指出来。3Q了!

解决方案 »

  1.   

    这个问题,你不要这样写,单独处理才有调理。给你个函数,用它可以组合成你需要的// 模拟一个键的动作。vKey 是键的虚拟码  Orientation 表示按下还是释放 , 1按下    0释放
    void KeyAction( int vKey , int Orientation )
    {
       INPUT Inputs888;
       SecureZeroMemory(&Inputs888,sizeof(INPUT));   Inputs888.type = INPUT_KEYBOARD;   // ki 共 5 个成员,仅3个需要赋值
       if(Orientation)
          Inputs888.ki.dwFlags = 0;
       else  
      Inputs888.ki.dwFlags = KEYEVENTF_KEYUP;   Inputs888.ki.wScan = MapVirtualKey(vKey, 0);
       if( Inputs888.ki.wScan == 0 ) // 失败就放弃这个
       {     return;
       }
       Inputs888.ki.wVk = vKey;   UINT ret77 = SendInput( 1, &Inputs888,sizeof(INPUT));    ASSERT(1==ret77);
    }