Sending key pressings. KEYBDINPUT ki; ki.wVk = VK_RETURN; ki.wScan = MapVirtualKeyEx(VK_RETURN, 0, GetKeyboardLayout(0)); ki.dwFlags = KEYEVENTF_EXTENDEDKEY; // or KEYEVENTF_KEYUP, one of those must work :) ki.time = 0; ki.dwExtraInfo = 0; INPUT ipEvent; ipEvent.type = INPUT_KEYBOARD; ipEvent.ki = ki; UINT nNumEvents = SendInput(1, &ipEvent, sizeof(INPUT)); BTW-You can get the window HWND, and then SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0); SendMessage(hWnd, WM_KEYUP, VK_RETURN, 0); Send ALT+SPACE to current focused window: keybd_event(VK_MENU, 0, 0, 0); keybd_event(VK_SPACE, 0, 0, 0); keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); This is an example for console window: Sends "CLS" and then ENTER.. Guess what it does char sc = 0; sc = MapVirtualKey(/*VK_C*/0x43, 0); SendMessage(hWnd, WM_KEYDOWN, sc, 1 | (1 << 30) | (sc << 16)); SendMessage(hWnd, WM_KEYUP, sc, 1 | (3 << 30) | (sc << 16)); sc = MapVirtualKey(/*VK_L*/0x4c, 0); SendMessage(hWnd, WM_KEYDOWN, sc, 1 | (1 << 30) | (sc << 16)); SendMessage(hWnd, WM_KEYUP, sc, 1 | (3 << 30) | (sc << 16)); sc = MapVirtualKey(/*VK_S*/0x53, 0); SendMessage(hWnd, WM_KEYDOWN, sc, 1 | (1 << 30) | (sc << 16)); SendMessage(hWnd, WM_KEYUP, sc, 1 | (3 << 30) | (sc << 16)); sc = MapVirtualKey(VK_RETURN, 0); SendMessage(hWnd, WM_KEYDOWN, sc, 1 | (1 << 30) | (sc << 16)); SendMessage(hWnd, WM_KEYUP, sc, 1 | (3 << 30) | (sc << 16)); (Did the target window) Get it?