// Go directly to a slide DllExport void GotoSlide(int id, int slideNo) { DEBUG("GotoSlide %i %i:\n", id, slideNo); // Did try WM_KEYDOWN/WM_CHAR/WM_KEYUP with SendMessage but didn't work // perhaps I was sending to the wrong window? No idea. // Anyway fall back to keybd_event, which is OK as long we makesure // the slideshow has focus first char ch[10]; if (slideNo < 0) return; pptView[id].guess = slideNo; _itoa_s(slideNo, ch, 10, 10); HWND h1 = GetForegroundWindow(); HWND h2 = GetFocus(); SetForegroundWindow(pptView[id].hWnd); SetFocus(pptView[id].hWnd); // slight pause, otherwise event triggering this call may grab focus back! Sleep(50); for (int i=0; i<10; i++) { if (ch[i] == '\0') break; keybd_event((BYTE)ch[i], 0, 0, 0); keybd_event((BYTE)ch[i], 0, KEYEVENTF_KEYUP, 0); } keybd_event(VK_RETURN, 0, 0, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); SetForegroundWindow(h1); SetFocus(h2); }
BOOL SetForegroundWindowInternal2(HWND hWnd) { BOOL ret = false; if (!::IsWindow(hWnd)) return ret; BYTE keyState[256] = { 0 }; //to unlock SetForegroundWindow we need to imitate Alt pressing if (GetKeyboardState((LPBYTE)&keyState)) { if (!(keyState[VK_MENU] & 0x80)) { keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY | 0, 0); } } ret = SetForegroundWindow(hWnd); if (GetKeyboardState((LPBYTE)&keyState)) { if (!(keyState[VK_MENU] & 0x80)) { keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } } return ret; }
void PressHotKey(BYTE key, BYTE mod) { keybd_event(mod, 0, 0, 0); keybd_event(key, 0, 0, 0); keybd_event(key, 0, KEYEVENTF_KEYUP, 0); keybd_event(mod, 0, KEYEVENTF_KEYUP, 0); }
void Test_GetKeyState() { HWND hwnd; MSG msg; hwnd = CreateTestWindow(); hKbdHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, GetModuleHandleA( NULL ), 0); hKbdLLHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandleA( NULL ), 0); ok(hKbdHook!=NULL," \n"); ok(hKbdLLHook!=NULL," \n"); keybd_event(VK_LMENU, 0, 0,0); while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); keybd_event(VK_LMENU, 0, KEYEVENTF_KEYUP,0); //fixme this hangs the test //while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE|PM_NOYIELD )) DispatchMessageA( &msg ); DestroyWindow(hwnd); while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); UnhookWindowsHookEx (hKbdHook); UnhookWindowsHookEx (hKbdLLHook); }
void HS_SendKeys::SimKeyDown(UINT vk, bool bForceExtended) { #ifdef _DEBUG Util_DebugMsg("==> HS_SendKeys::SimKeyDown : vk=%d, bForceExtended=%d)\n", vk, bForceExtended); #endif UINT scan; LPARAM lparam; scan = MapVirtualKey(vk, 0); // If the window is NULL if (m_hWnd == NULL || vk == VK_CAPITAL || vk == VK_NUMLOCK || vk == VK_SCROLL) { if (bForceExtended == true || IsVKExtended(vk) == true) keybd_event((BYTE)vk, (BYTE)scan, KEYEVENTF_EXTENDEDKEY, 0); else keybd_event((BYTE)vk, (BYTE)scan, 0, 0); } else { // Build the generic lparam to be used for WM_KEYDOWN/WM_KEYUP/WM_CHAR lparam = 0x00000001 | (LPARAM)(scan << 16); // Scan code, repeat=1 if (bForceExtended == true || IsVKExtended(vk) == true) lparam = lparam | 0x01000000; // Extended code if required if ( (m_nKeyMod & ALTMOD) && !(m_nKeyMod & CTRLMOD) ) // Alt without Ctrl PostMessage(m_hWnd, WM_SYSKEYDOWN, vk, lparam | 0x20000000); // Key down, AltDown=1 else PostMessage(m_hWnd, WM_KEYDOWN, vk, lparam); // Key down } } // SimKeyDown()
void AltF4(HWND hwnd) { keybd_event(VK_MENU, NULL, KEYEVENTF_EXTENDEDKEY|0, 0); keybd_event(VK_F4, NULL, KEYEVENTF_EXTENDEDKEY|0, 0); keybd_event(VK_F4, NULL, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0); keybd_event(VK_MENU, NULL, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0); }
bool HS_SendKeys::SetToggleState(UINT vk, bool bState) { bool bInitial; if (GetKeyState(vk) & 0x01) bInitial = true; // Was on else bInitial = false; // Was off #ifdef _DEBUG Util_DebugMsg("==> HS_SendKeys::SetToggleState : vk=%d, bState=%d, bInitial=%d)\n", vk, bState, bInitial); #endif // Do we need to do anything? if (bState == bInitial) return bInitial; // Nope // MessageBox(NULL, "Doing Capslock", "", MB_OK); keybd_event((BYTE)vk, MapVirtualKey(vk, 0), 0, 0); DoKeyDownDelay(); keybd_event((BYTE)vk, MapVirtualKey(vk, 0), KEYEVENTF_KEYUP, 0); DoKeyDelay(); return bInitial; } // SetToggleState()
CKeystrokeEngine::~CKeystrokeEngine() { // release any remaining down keys... keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); }
void identifier::werfeAngel() { //drücke die taste 3 byte keyToPress = 0x33; keybd_event(keyToPress, 0, 0L, 0L); keybd_event(keyToPress, 0, KEYEVENTF_KEYUP, 0L); }
void HandleKeyEvent(MouseEvent event) { unsigned int keycode = LOBYTE(event.value); byte winKeycode = 0; switch (keycode) { case kKeycodeLeft: winKeycode = VK_LEFT; break; case kKeycodeUp: winKeycode = VK_UP; break; case kKeycodeRight: winKeycode = VK_RIGHT; break; case kKeycodeDown: winKeycode = VK_DOWN; break; case kKeycodeBackSpace: winKeycode = VK_BACK; break; case kKeycodeReturn: winKeycode = VK_RETURN; break; default: MessageBeep(MB_OK); return; break; } if (event.type == EVENT_KEY_DOWN) { keybd_event(winKeycode, 0, 0, 0); } else { keybd_event(winKeycode, 0, KEYEVENTF_KEYUP, 0); } return; }
int w32_console_toggle_lock_key (int vk_code, Lisp_Object new_state) { int cur_state = (GetKeyState (vk_code) & 1); if (NILP (new_state) || (NUMBERP (new_state) && ((XUINT (new_state)) & 1) != cur_state)) { faked_key = vk_code; keybd_event ((BYTE) vk_code, (BYTE) MapVirtualKey (vk_code, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); keybd_event ((BYTE) vk_code, (BYTE) MapVirtualKey (vk_code, 0), KEYEVENTF_EXTENDEDKEY | 0, 0); keybd_event ((BYTE) vk_code, (BYTE) MapVirtualKey (vk_code, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); cur_state = !cur_state; } return cur_state; }
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { KBDLLHOOKSTRUCT *pKeyBoard = (KBDLLHOOKSTRUCT *)lParam; switch( pKeyBoard->vkCode ) { case VK_CAPITAL: { switch (wParam) { case WM_KEYDOWN: keybd_event(VK_BACK, 0x8e, 0, 0); return 1; case WM_KEYUP: keybd_event(VK_BACK, 0x8e, KEYEVENTF_KEYUP, 0); return 1; } } default: return CallNextHookEx( NULL, nCode, wParam, lParam ); } return 0; }
DWORD WINAPI BotThread(LPVOID param) { while (true) { mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0x1337); // Sleep(100); // ensure that this finishes; use alternate method (might not be nec) for (int i=0; i < 10; i++) { //mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0x1337); Sleep(10); //mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0x1337); if (quitLoop) break; } mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0x1337); /* keybd_event(0x41, MapVirtualKey(0x41, 0), 0, 0); // A key Sleep(40); keybd_event(0x41, MapVirtualKey(0x41, 0), KEYEVENTF_KEYUP, 0); keybd_event(0x44, MapVirtualKey(0x44, 0), 0, 0); // D key Sleep(40); keybd_event(0x44, MapVirtualKey(0x44, 0), KEYEVENTF_KEYUP, 0); */ // Use W and S seems to be better keybd_event(0x57, MapVirtualKey(0x57, 0), 0, 0); // W key Sleep(40); keybd_event(0x57, MapVirtualKey(0x57, 0), KEYEVENTF_KEYUP, 0); keybd_event(0x53, MapVirtualKey(0x53, 0), 0, 0); // S key Sleep(40); keybd_event(0x53, MapVirtualKey(0x53, 0), KEYEVENTF_KEYUP, 0); } return 0; }
LRESULT CALLBACK kb_proc (int code, WPARAM w, LPARAM l) { PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)l; printf ("code is %d, vkCode [%04x], scanCode [%04x]\n", code, p->vkCode, p->scanCode); if (code == HC_ACTION) { switch(w) { case WM_KEYDOWN: case WM_SYSKEYDOWN: if(p->vkCode == 0x00a2) { control_key= 1; } else if((p->vkCode == 76) && control_key) { keybd_event(VK_F4,0,0,0); keybd_event(VK_F4,0,KEYEVENTF_KEYUP,0); } printf("Get Action.\n"); GetAction(p); break; case WM_KEYUP: if(p->vkCode == 0x00a2) { control_key= 0; } break; case WM_SYSKEYUP: break; } } return CallNextHookEx (g_kb_hook, code, w, l); };
void keyboardPress(int vb) { Sleep(500); keybd_event(vb, 0, 0, 0); //«ö¤U Sleep(10); keybd_event(vb, 0, KEYEVENTF_KEYUP, 0); //©ñ¶} }
void generateSymbol(const char* symbol, jboolean pressed) { /* on Windows AltGr correspond to CTRL-ALT */ if(!strcmp(symbol, "altgr")) { int scancode = MapVirtualKey(VK_CONTROL, 0); keybd_event(VK_CONTROL, scancode, pressed ? 0 : KEYEVENTF_KEYUP, 0); scancode = MapVirtualKey(VK_MENU, 0); keybd_event(VK_MENU, scancode, pressed ? 0 : KEYEVENTF_KEYUP, 0); } else if(!strcmp(symbol, "shift")) { int scancode = MapVirtualKey(VK_SHIFT, 0); keybd_event(VK_SHIFT, scancode, pressed ? 0 : KEYEVENTF_KEYUP, 0); } else if(!strcmp(symbol, "ctrl")) { int scancode = MapVirtualKey(VK_CONTROL, 0); keybd_event(VK_CONTROL, scancode, pressed ? 0 : KEYEVENTF_KEYUP, 0); } else if(!strcmp(symbol, "alt")) { int scancode = MapVirtualKey(VK_MENU, 0); keybd_event(VK_MENU, scancode, pressed ? 0 : KEYEVENTF_KEYUP, 0); } else if(!strcmp(symbol, "hankaku")) { /* XXX constant name for HANKAKU ? */ /* int scancode = MapVirtualKey(VK_HANKAKU, 0); keybd_event(VK_HANKAKU, scancode, pressed ? 0 : KEYEVENTF_KEYUP, 0); */ } }
void SendKey(HWND hWndTargetWindow, BYTE virtualKey) { Sleep(100); keybd_event(virtualKey, 0, 0, 0); keybd_event(virtualKey, 0, KEYEVENTF_KEYUP, 0); Sleep(100); }
//--------------------------------------------------------------------------- void __fastcall TFileEdit::FindDialogFind(TObject *Sender) { int FoundAt, StartPos, ToEnd; // 検索は現在選択されている場所から開始される // 何も選択されていない場合は, // テキストの最初から開始される if(REdit->SelLength) { StartPos = REdit->SelStart + REdit->SelLength; } else { StartPos = 0; } // ToEnd は検索範囲の文字数を示す ToEnd = REdit->Text.Length() - StartPos; TSearchTypes stype; if( FindDialog->Options.Contains(frMatchCase) ) stype << stMatchCase; if( FindDialog->Options.Contains(frWholeWord) ) stype << stWholeWord; FoundAt = REdit->FindText(FindDialog->FindText, StartPos, ToEnd, stype); if( FoundAt != -1 ) { REdit->SetFocus(); REdit->SelStart = FoundAt; REdit->SelLength = FindDialog->FindText.Length(); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0); Application->ProcessMessages(); REdit->SelStart = FoundAt; REdit->SelLength = FindDialog->FindText.Length(); } }
int main(void) { POINT pt; int i; int delaytime; int keynum; printf("input the delay time(ms):"); scanf("%d",&delaytime); while(1) { switch (KEYDOWN(VK_ESCAPE)) { case 0: keybd_event(VK_NUMLOCK , 0, 0, 0); Sleep(delaytime / 2); keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0); Sleep(delaytime / 2); break; case 1: while (!KEYDOWN(VK_RETURN )) { Sleep(10); } break; } } return 0; }
LRESULT CALLBACK MouseHookLL (int nCode, WPARAM wParam, LPARAM lParam) { if (nCode < 0 || (!isOn)) { return CallNextHookEx(0, nCode, wParam, lParam); } else { // check origin of click PMSLLHOOKSTRUCT hs = (PMSLLHOOKSTRUCT) lParam; if (hs->dwExtraInfo == 0x1337) // simulated, let pass return CallNextHookEx(0, nCode, wParam, lParam); // start/stop macro if (wParam == WM_LBUTTONDOWN) { // start quitLoop = false; ResumeThread(bot); return 1; } else if (wParam == WM_LBUTTONUP) { // stop quitLoop = true; Sleep(10); SuspendThread(bot); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0x1337); //keybd_event(0x41, MapVirtualKey(0x41, 0), KEYEVENTF_KEYUP, 0); //keybd_event(0x44, MapVirtualKey(0x44, 0), KEYEVENTF_KEYUP, 0); keybd_event(0x57, MapVirtualKey(0x57, 0), KEYEVENTF_KEYUP, 0); keybd_event(0x53, MapVirtualKey(0x53, 0), KEYEVENTF_KEYUP, 0); return 1; } else { return CallNextHookEx(0, nCode, wParam, lParam); } } }
static int _selectNextPhoto( lua_State *L ) { int retVal = 0; if( lua_gettop( L ) == 0 ) { /* INPUT input[ 2 ] = {0}; input[ 0 ].type = INPUT_KEYBOARD; input[ 0 ].ki.wVk = VK_RIGHT; input[ 0 ].ki.dwFlags = 0; input[ 1 ].type = INPUT_KEYBOARD; input[ 1 ].ki.wVk = VK_RIGHT; input[ 1 ].ki.dwFlags = KEYEVENTF_KEYUP; SendInput( sizeof( input ) / sizeof( input[ 0 ] ), input, sizeof( INPUT ) ); */ keybd_event( VK_RIGHT, MapVirtualKey( LOBYTE( VkKeyScan( VK_RIGHT ) ), 0 ), 0, 0 ); Sleep( 50 ); keybd_event( VK_RIGHT, MapVirtualKey( LOBYTE( VkKeyScan( VK_RIGHT ) ), 0 ), 0, KEYEVENTF_KEYUP ); } // if return( 0 ); } // _selectNextPhoto
static void __fastcall KillDialog(HWND hh) { //------------------------------------------------------------------------------- // Убивает диалоговое окно автокада - с целью его продвижения | //------------------------------------------------------------------------------- // DestroyWindow(hh); // DWORD CurId, DlgId; // CurId = ::GetCurrentThreadId(); // DlgId = ::GetWindowThreadProcessId(hh, NULL); // ::AttachThreadInput(CurId, DlgId, TRUE); // ::SetFocus(hh); RECT wr; int x, y; ::GetWindowRect(hh, &wr); x = (wr.left + wr.right) / 2; y = wr.top + 5; ::SetCursorPos(x, y); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); aWait(20); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); aWait(20); aWait(100); if (SpecCatcherMode) { keybd_event(VK_RETURN, 0, 0, 0); aWait(30); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); aWait(30); } else { keybd_event(VK_ESCAPE, 0, 0, 0); aWait(30); keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0); aWait(30); } }
/** * Set current state of a keyboard modifier. * * @param idModifier Modifier to set (VK_CAPITAL, VK_SCROLL or VK_NUMLOCK) * @param fState State to set */ static void winSetModifierState(int idModifier, bool fState) { AssertReturnVoid((idModifier == VK_CAPITAL) || (idModifier == VK_SCROLL) || (idModifier == VK_NUMLOCK)); /* If the modifier is already in desired state, just do nothing. Otherwise, toggle it. */ if (winGetModifierState(idModifier) != fState) { /* Simulate KeyUp+KeyDown keystroke */ keybd_event(idModifier, 0, KEYEVENTF_EXTENDEDKEY, 0); keybd_event(idModifier, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); /* Process posted above keyboard events immediately: */ MSG msg; while (::PeekMessage(&msg, NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)) ::DispatchMessage(&msg); LogRel2(("HID LEDs sync: setting %s state to %s (0x%X).\n", VBOX_CONTROL_TO_STR_NAME(idModifier), VBOX_BOOL_TO_STR_STATE(fState), MapVirtualKey(idModifier, MAPVK_VK_TO_VSC))); } else { LogRel2(("HID LEDs sync: setting %s state: skipped: state is already %s (0x%X).\n", VBOX_CONTROL_TO_STR_NAME(idModifier), VBOX_BOOL_TO_STR_STATE(fState), MapVirtualKey(idModifier, MAPVK_VK_TO_VSC))); } }
void HitKey(unsigned char cKey, unsigned int iTimes) { for(unsigned int i = 0; i < iTimes; ++i) { keybd_event(cKey, 0, 0, 0); keybd_event(cKey, 0, KEYEVENTF_KEYUP, 0); } }
void MainWindow::emitClickedKey(int key) { // Моделируем нажатие клавиши keybd_event( key, 0, 0, 0 ); // Моделируем возврат клавиши в не нажатое состояние keybd_event( key, 0, KEYEVENTF_KEYUP, 0 ); }
void ToggleScrollLockKey() { #if defined( _WIN32 ) // Simulate a key press keybd_event(VK_SCROLL, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0); // Simulate a key release keybd_event(VK_SCROLL, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); #endif // _WIN32 }
/// PRIVATE SLOTS void UControlMediaPlayer::emitClickedKey(int key) { // Моделируем нажатие клавиши keybd_event(key, 0, 0, 0); // Моделируем возврат клавиши в не нажатое состояние keybd_event(key, 0, KEYEVENTF_KEYUP, 0); }
//----------------------------------------------------------- void PressKey(BYTE Vk, UINT Scan) { //Presses the appropriate key specified ActivateTarget(); keybd_event(Vk, (BYTE)Scan, 0, 0); keybd_event(Vk, (BYTE)Scan, KEYEVENTF_KEYUP, 0); }
int CautooDlg::maxWin() { keybd_event(VK_LWIN, 0, 0, 0); keybd_event(VK_UP, 0, 0, 0); Sleep(500); keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0); Sleep(500); return(0); }
void sendtext(int msngrwindow) { if(msngrwindow == 2) keybd_event(VK_CONTROL,0,0 , 0); keybd_event(VK_RETURN,0,0 , 0); keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP , 0); keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP , 0); return; }