Guten Tag, Liebes. Ich möchte meine Geschichte und einen kleinen Lebenshack teilen.
Ich denke, alle Büroangestellten haben eine Situation, in der sie nach einem leckeren Mittagessen sehr müde sind und ein Nickerchen machen möchten. Tatsächlich ist der Schlaf am Tag sowohl für den Körper als auch für die Arbeit sehr nützlich, da er sich sehr positiv auf die Produktivität auswirkt. Nach meiner Erfahrung sind jedoch mehr als 20 Minuten eine Pleite. Dies reicht aus, damit sich der Körper normalisiert. Und nach buchstäblich einer Minute, in der ich wirklich weiter schlafen möchte, wacht der Körper auf, Sie spüren Kraft und einen Kraftanstieg.
Auf der anderen Seite bevorzugen viele Menschen eine Tasse Kaffee. Und obwohl dies anscheinend hilft, stellt der Körper seine Ressourcen nicht wieder her, sondern verliert nur mehr. Ja, und es ist schädlich.
Im Allgemeinen ist klar, worum es geht, oder? Es stellt sich jedoch natürlich die Frage, wie dies im Büro angekurbelt werden kann. Und die Sache ist, dass die meisten Chefs dies nicht gutheißen. Und das Sofa ist nicht überall. Ja, und es ist unwahrscheinlich, dass Sie sich ein Nickerchen machen, wenn Sie Ihren Arbeitsplatz schätzen.
Ich hatte jedoch Glück, mein Stuhl kann sich sehr zurücklehnen und ich kann im Allgemeinen arbeiten und nur nachdenken. Und alles wäre gut, wenn nicht für eine Sache.
Absolut statisches Bild auf Monitoren verrät mich mit Innereien!
Ich habe dieses Problem irgendwie mit einem Freund geteilt, und er bot scherzhaft an, einen Simulator für die Arbeit zu erstellen.
Die Idee, einen vollwertigen Arbeitssimulator zu implementieren, hat mir sehr gut gefallen - was soll das sein? Was ist das und könnte für mich arbeiten? Im Allgemeinen ist es klar, dass es äußerst schwierig wäre, dies zu schaffen. Aber man könnte die Aufgabe vereinfachen.
Von Beruf bin ich ein einfacher C ++ - Programmierer und krieche daher sehr oft im Internet und lese verschiedene Artikel. Ohne das verstehen sie es alle.
Wenn Sie eine Person beobachten, die einen langen und komplexen Artikel liest, werden Sie feststellen, dass sie den Artikel regelmäßig nach oben und unten scrollt. Und das habe ich beschlossen umzusetzen.
Nach buchstäblich einer Stunde Surfen im Internet wurde durch Kombinieren des Materials von drei Artikeln (Artikel in einer versteckten Anwendung ohne Fenster, Erfassen von Tastaturereignissen und Artikel zum Simulieren von Mausereignissen) ein einfaches Programm implementiert, das ich gerne mit anderen teilen möchte.
Die Idee ist im Kern einfach: zufällige Mausrad-Scroll-Ereignisse. Das heißt, Sie wählen einfach einen Artikel aus, der für die aktuelle Aufgabe authentischer und komplizierter ist, schalten den Simulator ein und schlafen ruhig ein. Das Programm ist im Task-Manager nicht sichtbar (oder ich habe es nur geblendet und dort nicht gefunden). Wenn Sie die Tastenkombination Strg + Leertaste verwenden, wird die Ausführung angehalten und die Ausführung fortgesetzt. Wenn Sie auf den Abwärtspfeil klicken, wird sie geschlossen. Das Programm kann über die Konsole mit dem Befehl tasklist angezeigt werden. Bei Bedarf können Sie die PID ermitteln, um es über den Taskkill zu schließen.
Ich selbst verstehe den Programmcode nicht vollständig, daher gibt es keine Kommentare.
Eigentlich der Code selbst:
#define WIN32_LEAN_AND_MEAN #define _WIN32_WINNT 0x0500 #include <stdio.h> #include <iostream> #include <stdlib.h> #include <time.h> #include <conio.h> #include <string.h> #include <windows.h> HHOOK hKeyboardHook; #define X 500 #define Y 500 #define SCREEN_WIDTH 1920 #define SCREEN_HEIGHT 1080 bool bQuit = false; bool bPause = false; __declspec(dllexport) LRESULT CALLBACK KeyboardEvent(int nCode, WPARAM wParam, LPARAM lParam) { DWORD SHIFT_key = 0; DWORD CTRL_key = 0; DWORD ALT_key = 0; if ((nCode == HC_ACTION) && ((wParam == WM_SYSKEYDOWN) || (wParam == WM_KEYDOWN))) { KBDLLHOOKSTRUCT hooked_key = *((KBDLLHOOKSTRUCT*)lParam); DWORD dwMsg = 1; dwMsg += hooked_key.scanCode << 16; dwMsg += hooked_key.flags << 24; char lpszKeyName[1024] = { 0 }; int i = GetKeyNameText(dwMsg, (lpszKeyName + 1), 0xFF) + 1; int key = hooked_key.vkCode; SHIFT_key = GetAsyncKeyState(VK_SHIFT); CTRL_key = GetAsyncKeyState(VK_CONTROL); ALT_key = GetAsyncKeyState(VK_MENU); //printf("Keycode = %c\n", key); if (key == VK_DOWN) { bQuit = true; PostQuitMessage(0); } if (CTRL_key != 0 && key == ' ') { bPause = !bPause; } //if (key >= 'A' && key <= 'Z') //{ // if (GetAsyncKeyState(VK_SHIFT) >= 0) key += 32; // /********************************************* // *** Hotkey scope *** // *** do stuff here *** // **********************************************/ // if (CTRL_key != 0 && key == 'y') // { // MessageBox(NULL, "CTRL-y was pressed\nLaunch your app here", "HOTKE Y", MB_OK); // CTRL_key = 0; // //do stuff here // } // if (CTRL_key != 0 && key == 'q') // { // MessageBox(NULL, "Shutting down", "HOTKE Y", MB_OK); // bQuit = true; // PostQuitMessage(0); // } // // SHIFT_key = 0; // CTRL_key = 0; // ALT_key = 0; //} } return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam); } void MessageLoop() { MSG message; while (GetMessage(&message, NULL, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } } DWORD WINAPI my_HotKey(LPVOID lpParm) { HINSTANCE hInstance = GetModuleHandle(NULL); if (!hInstance) hInstance = LoadLibrary((LPCSTR)lpParm); if (!hInstance) return 1; hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardEvent, hInstance, NULL); MessageLoop(); UnhookWindowsHookEx(hKeyboardHook); return 0; } void MouseSetup(INPUT *buffer) { buffer->type = INPUT_MOUSE; buffer->mi.dx = (0 * (0xFFFF / SCREEN_WIDTH)); buffer->mi.dy = (0 * (0xFFFF / SCREEN_HEIGHT)); buffer->mi.mouseData = 0; buffer->mi.dwFlags = MOUSEEVENTF_ABSOLUTE; buffer->mi.time = 0; buffer->mi.dwExtraInfo = 0; } void MouseMoveAbsolute(INPUT *buffer, int x, int y) { buffer->mi.dx = (x * (0xFFFF / SCREEN_WIDTH)); buffer->mi.dy = (y * (0xFFFF / SCREEN_HEIGHT)); buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE); SendInput(1, buffer, 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)); } void MouseWheel(INPUT *buffer, bool bUp) { buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_WHEEL); if(bUp) buffer->mi.mouseData = 120; else buffer->mi.mouseData = -120; SendInput(1, buffer, sizeof(INPUT)); } /* declare window procedure for this application. */ LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR szArgs, int nCmdShow) { HANDLE hThread; DWORD dwThread; hThread = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)my_HotKey, (LPVOID)szArgs[0], NULL, &dwThread); INPUT buffer[1]; int probability = 3; // probability / 1000 int pr = probability; int repeat = 0; while (!bQuit) { if (bPause) { continue; Sleep(100); } MouseSetup(buffer); int p = rand() % 1000; if (p < pr) { if(p >= (pr + 1) / 2) MouseWheel(buffer, true); else MouseWheel(buffer, false); pr-=100; if (pr < probability) pr = probability; } else { pr++; } Sleep(100); } if (hThread) return WaitForSingleObject(hThread, INFINITE); return 0; //MSG Msg; // save window messages here. // /* Run the message pump. It will run until GetMessage() returns 0 */ //while (GetMessage(&Msg, NULL, 0, 0)) //{ // TranslateMessage(&Msg); // Translate virtual-key messages to character messages // DispatchMessage(&Msg); // Send message to WindowProcedure //} //return Msg.wParam; return 0; } /* This function is called by the Windows function DispatchMessage() */ LRESULT CALLBACK WinProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case VK_ESCAPE: { MessageBox(NULL, "You hit escape, quitting now.", "Message", 0); PostQuitMessage(0); break; } // handle non-trapped messages. default:return DefWindowProc(hWnd, Message, wParam, lParam); } return 0; // this indicates a message was trapped. }
Der Code wird nicht von unnötigen Kommentaren und anderem Müll befreit, aus dem einfachen Grund, dass es für jemanden nützlich sein könnte, ihn zu verstehen. Leider kann ich die ausführbare Datei für die Faulen nicht anhängen.
Ich möchte darauf hinweisen, dass ich dieses Programm niemandem empfehlen kann und ich selbst kein Risiko eingehen werde, es zu verwenden. Wenn Sie gerade am Arbeitsplatz eingeschlafen sind, kann dies durch schlechte Gesundheit, lange Abwesenheit von Urlaub oder etwas anderes erklärt werden. Und wenn jemand versteht, dass Sie versuchen, ihn zu täuschen, wird es bereits schlecht, beleidigend und unangenehm sein. Und es ist unwahrscheinlich, dass sich dies positiv auf Ihre Karriere auswirkt.