void keyPressTilde() { ip.ki.wVk = 0xC0; // virtual-key code for the key ip.ki.dwFlags = 0; SendInput(1, &ip, sizeof(INPUT)); ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release SendInput(1, &ip, sizeof(INPUT)); };
void CommonAPI::MouseClick() { inputMouse.mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN); SendInput(1, &inputMouse, sizeof(INPUT)); Sleep(10); inputMouse.mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP); SendInput(1, &inputMouse, sizeof(INPUT)); }
void MouseClick() { mouseBuffer.mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN); SendInput(1, &mouseBuffer, sizeof(INPUT)); Sleep(10); mouseBuffer.mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP); SendInput(1, &mouseBuffer, sizeof(INPUT)); }
void MouseClick(INPUT *buffer) { buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN); SendInput(1, buffer, sizeof(INPUT)); Sleep(10); buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP); SendInput(1, buffer, sizeof(INPUT)); }
BOOL WINAPI pausePlayMediaEnumProc(HWND hwnd, LPARAM lParam) { if (hwnd == msgWindow || !IsWindowVisible(hwnd)) { return true; } int length = GetWindowTextLength(hwnd) + 1; char* titleBuff = new char[length]; GetWindowText(hwnd, titleBuff, length); UINT count = sizeof(mediaCommands) / sizeof(mediaCommands[0]); for (UINT i = 0; i < count; i++) { if (strstr(titleBuff, mediaCommands[i].title) > 0) { mediaEnumInput* input = (mediaEnumInput*)lParam; input->hasChangedVolume = true; if (input->simulatePause && mediaCommands[i].button == NULL) { KEYBDINPUT kb = {}; kb.wVk = VK_MEDIA_PLAY_PAUSE; kb.dwExtraInfo = GetMessageExtraInfo(); INPUT input = {}; input.type = INPUT_KEYBOARD; input.ki = kb; SendInput(1, &input, sizeof(INPUT)); kb.dwFlags = KEYEVENTF_KEYUP; SendInput(1, &input, sizeof(INPUT)); } else { LONG windowStyles = GetWindowLong(hwnd, GWL_EXSTYLE); LONG windowStyleNoActive = windowStyles | WS_EX_NOACTIVATE; SetWindowLong(hwnd, GWL_EXSTYLE, windowStyleNoActive); SendMessage(hwnd, WM_ACTIVATE, WA_ACTIVE, 0); SendMessage(hwnd, WM_KEYDOWN, mediaCommands[i].button, 0); SendMessage(hwnd, WM_KEYUP, mediaCommands[i].button, 0); SendMessage(hwnd, WM_ACTIVATE, WA_INACTIVE, 0); SetWindowLong(hwnd, GWL_EXSTYLE, windowStyles); } break; } } delete[] titleBuff; return true; }
void keyPressBackslash() { ip.ki.wVk = 0xBF; // virtual-key code for the key ip.ki.dwFlags = 0; SendInput(1, &ip, sizeof(INPUT)); Sleep(500); ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release SendInput(1, &ip, sizeof(INPUT)); };
void LeftClick() { INPUT Input= {0}; Input.type=INPUT_MOUSE; Input.mi.dwFlags=MOUSEEVENTF_LEFTDOWN; SendInput(1, &Input, sizeof(INPUT)); ZeroMemory(&Input, sizeof(INPUT)); Input.type=INPUT_MOUSE; Input.mi.dwFlags=MOUSEEVENTF_LEFTUP; SendInput(1, &Input, sizeof(INPUT)); }
// Generate a mouse right click based on hardware. void VirtualMouse::generate_right_click() { mouse_event.mi.dx = 0; mouse_event.mi.dy = 0; mouse_event.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN; SendInput(1, &mouse_event, sizeof(mouse_event)); mouse_event.mi.dwFlags = MOUSEEVENTF_RIGHTUP; SendInput(1, &mouse_event, sizeof(mouse_event)); }
void KeyboardKeyPress(WORD vKey) { keyboardBuffer.ki.wScan = MapVirtualKey(vKey, MAPVK_VK_TO_VSC); keyboardBuffer.ki.wVk = vKey; keyboardBuffer.ki.dwFlags = 0; SendInput(1, &keyboardBuffer, sizeof(INPUT)); Sleep(10); keyboardBuffer.ki.dwFlags = KEYEVENTF_KEYUP; SendInput(1, &keyboardBuffer, sizeof(INPUT)); }
// Uses SendInput to emulate a keyboard press void PressKeyboardKey(char key){ INPUT ip; ip.type = INPUT_KEYBOARD; ip.ki.wVk = key; ip.ki.wScan = 0; ip.ki.dwFlags = 0; ip.ki.time = 0; ip.ki.dwExtraInfo = 0; SendInput(1, &ip, sizeof(INPUT)); ip.ki.dwFlags = KEYEVENTF_KEYUP; SendInput(1, &ip, sizeof(INPUT)); }
void GTKeyboardDriver::keyRelease(GUITestOpStatus &os, int key, int modifiers) { GT_CHECK(key != 0, " Error: key = 0 in GTKeyboardDriver::keyRelease()"); if (modifiers) { INPUT input = getKeyEvent(modifiers, true); SendInput(1, &input, sizeof(input)); } INPUT input = getKeyEvent(key, true); SendInput(1, &input, sizeof(input)); }
void keyMouse::applyKeys(){ INPUT eventPress = {0}; INPUT eventRelease = {0}; bool send = false; //Check if there is anything new to press for(std::vector<std::string>::size_type i = 0; i != buttons.size(); i++) { //if in buttons and not in buttonsOld press it if(!(std::find(buttonsOld.begin(), buttonsOld.end(), buttons[i]) != buttonsOld.end())){ // buttonsOld does not contain buttons[i] so press the button if(buttons[i].find("KEY") != std::string::npos){ pressKey(eventPress, bmap[buttons[i]]); send = true; }else if(buttons[i].find("MOUSE") != std::string::npos){ pressMouse(eventPress, bmap[buttons[i]]); send = true; }else if(buttons[i].find("MOTION") != std::string::npos){ send = false; processMotionPress(buttons[i]); } if(send == true){ SendInput( 1, &eventPress, sizeof( eventPress ) ); } } } //Check if anything that was pressed last time is now unpressed for(std::vector<std::string>::size_type i = 0; i != buttonsOld.size(); i++) { //if in buttonsOld and not in buttons release it if( !(std::find(buttons.begin(), buttons.end(), buttonsOld[i]) != buttons.end())) { // buttons does not contain buttonsOld[i] so release the button press if(buttonsOld[i].find("KEY") != std::string::npos){ releaseKey(eventRelease, bmap[buttonsOld[i]]); send = true; // std::cout << " ReleaseKey: " << buttonsOld[i] << "\n"; }else if(buttonsOld[i].find("MOUSE") != std::string::npos){ releaseMouse(eventRelease, bmap[buttonsOld[i]]); send = true; //std::cout << " ReleaseMouse: " << buttonsOld[i] << "\n"; }else if(buttonsOld[i].find("MOTION") != std::string::npos){ send = false; processMotionRelease(buttonsOld[i]); } if(send == true){ SendInput( 1, &eventRelease, sizeof( eventRelease ) ); } } } buttonsOld = buttons; //clear the vector buttons.clear(); }
void KeyPresser::sendKeys(int numKeys, int keys[MAX_KEYS]) { int i; for (i=0; i<numKeys; i++) { input.ki.wVk = keys[i]; input.ki.dwFlags = KEYPRESS; SendInput(1, &input, sizeof(INPUT)); } for (i=numKeys-1; i>=0; i--) { input.ki.wVk = keys[i]; input.ki.dwFlags = KEYEVENTF_KEYUP; SendInput(1, &input, sizeof(INPUT)); } }
// SendInput: http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx // INPUT: http://msdn.microsoft.com/en-us/library/ms646270(v=VS.85).aspx void MouseLeftClick() { INPUT input = { 0 }; input.type = INPUT_MOUSE; input.mi.mouseData = 0; input.mi.dx = 0; input.mi.dy = 0; input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; SendInput(1, &input, sizeof(input)); input.mi.dwFlags = MOUSEEVENTF_LEFTUP; SendInput(1, &input, sizeof(input)); }
void Relax::ReleaseButtons() { if(Button1.Pressed && Time > Button1.ReleaseAt) { SendInput(1, &Button1.ReleaseButton, sizeof(INPUT)); Button1.Pressed = false; } if(Button2.Pressed && Time > Button2.ReleaseAt) { SendInput(1, &Button2.ReleaseButton, sizeof(INPUT)); Button2.Pressed = false; } }
void LeftClick() { puts("LEFT CLICK"); INPUT Input= {0}; // Crear la esturctura de INPUT Input.type = INPUT_MOUSE; // Decimos que vamos a usar el mouse Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; // Establecemos el evento como apretar el boton izquierdo SendInput( 1, &Input, sizeof(INPUT) ); // Enviamos los cambios de INPUT ZeroMemory(&Input,sizeof(INPUT)); // Borramos los datos de estructura INPUT Input.type = INPUT_MOUSE; // Decimos que vamos a usar el mouse Input.mi.dwFlags = MOUSEEVENTF_LEFTUP; // Establecemos el evento como soltar el boton izquierdo SendInput( 1, &Input, sizeof(INPUT) ); // Enviamos los cambios de INPUT }
bool keyReleaseWindows(int key, int modifiers = 0, bool extended = false) { DRIVER_CHECK(key != 0, " Error: key = 0 in GTKeyboardDriver::keyRelease()"); if (modifiers) { INPUT input = getKeyEvent(modifiers, true); SendInput(1, &input, sizeof(input)); } INPUT input = getKeyEvent(key, true, extended); SendInput(1, &input, sizeof(input)); return true; }
void KeyboardSimuliator::Sendchar(char c) { INPUT ip; ip.type = INPUT_KEYBOARD; ip.ki.wScan = 0; ip.ki.time = 0; ip.ki.dwExtraInfo = 0; ip.ki.wVk = c; ip.ki.dwFlags = 0; // 0 for key press SendInput(1, &ip, sizeof(INPUT)); ip.ki.dwFlags = KEYEVENTF_KEYUP; SendInput(1, &ip, sizeof(INPUT)); Sleep(1); }
void RightClick() { puts("RIGHT CLICK"); INPUT Input= {0}; Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN; // Establecemos el evento como apretar el boton derecho SendInput( 1, &Input, sizeof(INPUT) ); ZeroMemory(&Input,sizeof(INPUT)); Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_RIGHTUP; // Establecemos el evento como soltar el boton derecho SendInput( 1, &Input, sizeof(INPUT) ); }
BOOL wf_peer_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y) { if ((flags & PTR_XFLAGS_BUTTON1) || (flags & PTR_XFLAGS_BUTTON2)) { INPUT mouse_event; ZeroMemory(&mouse_event, sizeof(INPUT)); mouse_event.type = INPUT_MOUSE; if (flags & PTR_FLAGS_MOVE) { float width, height; wfInfo* wfi; wfi = wf_info_get_instance(); if (!wfi) return FALSE; //width and height of primary screen (even in multimon setups width = (float) GetSystemMetrics(SM_CXSCREEN); height = (float) GetSystemMetrics(SM_CYSCREEN); x += wfi->servscreen_xoffset; y += wfi->servscreen_yoffset; mouse_event.mi.dx = (LONG)((float) x * (65535.0f / width)); mouse_event.mi.dy = (LONG)((float) y * (65535.0f / height)); mouse_event.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; SendInput(1, &mouse_event, sizeof(INPUT)); } mouse_event.mi.dx = mouse_event.mi.dy = mouse_event.mi.dwFlags = 0; if (flags & PTR_XFLAGS_DOWN) mouse_event.mi.dwFlags |= MOUSEEVENTF_XDOWN; else mouse_event.mi.dwFlags |= MOUSEEVENTF_XUP; if (flags & PTR_XFLAGS_BUTTON1) mouse_event.mi.mouseData = XBUTTON1; else if (flags & PTR_XFLAGS_BUTTON2) mouse_event.mi.mouseData = XBUTTON2; SendInput(1, &mouse_event, sizeof(INPUT)); } else { wf_peer_mouse_event(input, flags, x, y); } return TRUE; }
//does not work void SendKeyPress2( int code ) { INPUT ip; ip.type = INPUT_KEYBOARD; ip.ki.wScan = 0; ip.ki.time = 0; ip.ki.dwExtraInfo = 0; ip.ki.wVk = 0; ip.ki.wScan = MapVirtualKey( 0x12, MAPVK_VK_TO_VSC); ip.ki.dwFlags = KEYEVENTF_SCANCODE; // 0 for key press SendInput(1, &ip, sizeof(INPUT)); Sleep( SLEEP_BETWEEN_KEYPRESS ); ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release SendInput(1, &ip, sizeof(INPUT)); }
//定时模拟按下Z void CALLBACK CC2ZDlg::timerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime) { if ((GetKeyState('C') & (1 << 15)) != 0) // C键按下 { INPUT input; ZeroMemory(&input, sizeof(input)); input.type = INPUT_KEYBOARD; input.ki.wVk = 'Z'; input.ki.wScan = MapVirtualKey(input.ki.wVk, MAPVK_VK_TO_VSC); SendInput(1, &input, sizeof(INPUT)); // 按下Z键 Sleep(100); // 可能东方是在处理逻辑时检测一下Z键是否按下才发弹幕,如果这时Z键刚好弹起就没有反应,所以要延迟一下 input.ki.dwFlags = KEYEVENTF_KEYUP; SendInput(1, &input, sizeof(INPUT)); // 弹起Z键 } }
//does not work //http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx void SendKeyPress1( int code ) { INPUT ip; ip.type = INPUT_KEYBOARD; ip.ki.wScan = 0; ip.ki.time = 0; ip.ki.dwExtraInfo = 0; // ip.ki.wVk = 0x45; // E ip.ki.wVk = 0x12; // Alt ip.ki.dwFlags = 0; // 0 for key press SendInput(1, &ip, sizeof(INPUT)); Sleep( SLEEP_BETWEEN_KEYPRESS ); ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release SendInput(1, &ip, sizeof(INPUT)); }
void KeyboardSystem::pressNumber(const uint8_t N) { memset(&input_, 0, sizeof(INPUT)); input_.type = INPUT_KEYBOARD; input_.ki.dwFlags = 0; input_.ki.wVk = 0x30 + N; SendInput(1, &input_, sizeof(INPUT)); std::this_thread::sleep_for(this->sleep_time_); memset(&input_, 0, sizeof(INPUT)); input_.type = INPUT_KEYBOARD; input_.ki.dwFlags = KEYEVENTF_KEYUP; input_.ki.wVk = 0x30 + N; SendInput(1, &input_, sizeof(INPUT)); std::this_thread::sleep_for(this->sleep_time_); }
void sendKeyStrokes (std::wstring * s, bool noInternalActions = false)//Send Keys Strokes { HWND hwnd = GetFocus(); int cInputs = s->length() * 2; INPUT * ip = new INPUT[cInputs]; for(int i=0, ii=0; i < s->length(); i++, ii++){ ip[ii].type = INPUT_KEYBOARD; ip[ii].ki.dwExtraInfo = 0xDEADC0DE; ip[ii].ki.dwFlags = KEYEVENTF_UNICODE; ip[ii].ki.time = 0; ip[ii].ki.wScan = s->at(i); ip[ii].ki.wVk = 0; //SendInput(1, &ip, sizeof(INPUT)); ii++; ip[ii].type = INPUT_KEYBOARD; ip[ii].ki.dwExtraInfo = 0; ip[ii].ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_UNICODE; ip[ii].ki.time = 0; ip[ii].ki.wScan = s->at(i); ip[ii].ki.wVk = 0; //SendInput(1, &ip, sizeof(INPUT)); } int cSent = SendInput(cInputs, ip, sizeof(INPUT)); Debug(L"cInputs=%d, cSent=%d\n",cInputs, cSent); if (noInternalActions == false) { InternalEditor.AppendText(s->c_str(), s->length()); } }
/*********************************************************************** * * OSK_ReleaseKey * * Release the key of ID wCommand */ BOOL OSK_ReleaseKey(WORD ScanCode) { INPUT Input; BOOL bExtendedKey; LONG WindowStyle; HWND hWndControl; /* Is it a 2-states key ? */ hWndControl = GetDlgItem(Globals.hMainWnd, ScanCode); WindowStyle = GetWindowLongW(hWndControl, GWL_STYLE); if ((WindowStyle & BS_AUTOCHECKBOX) != BS_AUTOCHECKBOX) return FALSE; /* Is the key down ? */ if (SendMessageW(hWndControl, BM_GETCHECK, 0, 0) != BST_CHECKED) return TRUE; /* Extended key ? */ if (ScanCode & 0x0200) bExtendedKey = TRUE; else bExtendedKey = FALSE; ScanCode &= 0xFF; /* Release the key */ Input.type = INPUT_KEYBOARD; Input.ki.wVk = 0; Input.ki.wScan = ScanCode; Input.ki.time = GetTickCount(); Input.ki.dwExtraInfo = GetMessageExtraInfo(); Input.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP; if (bExtendedKey) Input.ki.dwFlags |= KEYEVENTF_EXTENDEDKEY; SendInput(1, &Input, sizeof(Input)); return TRUE; }
void DataHandler::sendKey(int vkey) { INPUT* key = new INPUT; key->type = INPUT_KEYBOARD; key->ki.wVk = vkey; key->ki.dwFlags = 0; key->ki.time = 0; key->ki.wScan = 0; key->ki.dwExtraInfo = 0; SendInput(1,key,sizeof(INPUT)); key->ki.dwExtraInfo = KEYEVENTF_KEYUP; SendInput(1,key,sizeof(INPUT)); }
virtual bool injectKeyEvents( const std::vector<KeyEventDesc> & intputlist) { if (!intputlist.size()) return false; INPUT * inputs = new INPUT[intputlist.size()]; do { for (int pos=0; pos<intputlist.size(); ++pos) { inputs[pos].type = INPUT_KEYBOARD; inputs[pos].ki.wVk = intputlist[pos].keyval; if (intputlist[pos].type == KEY_EVENT_PRESSED) { inputs[pos].ki.dwFlags = 0; } else { inputs[pos].ki.dwFlags = KEYEVENTF_KEYUP; } inputs[pos].ki.time = 0; } SendInput(intputlist.size(), inputs, sizeof(INPUT)); }while(0); delete [] inputs; return true; }
void SharedMemoryTracker::updateOrientation() { OutputDebugString("Motion Tracker updateOrientation\n"); if(getOrientation(&yaw, &pitch, &roll) == 0) { yaw = fmodf(yaw + 360.0f, 360.0f); pitch = -fmodf(pitch + 360.0f, 360.0f); deltaYaw = yaw - currentYaw; deltaPitch = pitch - currentPitch; // hack to avoid errors while translating over 360/0 if(fabs(deltaYaw) > 4.0f) deltaYaw = 0.0f; if(fabs(deltaPitch) > 4.0f) deltaPitch = 0.0f; mouseData.mi.dx = (long)(deltaYaw*multiplierYaw); mouseData.mi.dy = (long)(deltaPitch*multiplierPitch); OutputDebugString("Motion Tracker SendInput\n"); SendInput(1, &mouseData, sizeof(INPUT)); currentYaw = yaw; currentPitch = pitch; currentRoll = (float)( roll * (PI/180.0) * multiplierRoll); // convert from deg to radians then apply mutiplier } }
void SimulateKeyboard() { INPUT inputKeyboard = {0}; inputKeyboard.type = INPUT_KEYBOARD; inputKeyboard.ki.wVk = VK_F24;//键盘上没有的按键 SendInput(1, &inputKeyboard, sizeof(inputKeyboard)); }