सिम्युलेटर पढ़ने के लेख

शुभ दोपहर, प्रिय। मैं अपनी कहानी और थोड़ा जीवन हैक साझा करना चाहूंगा।


मुझे लगता है कि सभी कार्यालय कर्मियों की एक स्थिति है, जहां स्वादिष्ट दोपहर के भोजन के बाद, वे बहुत थक गए हैं और झपकी लेना चाहते हैं। वास्तव में, दिन की नींद शरीर और काम दोनों के लिए बहुत उपयोगी है, क्योंकि इसका उत्पादकता पर बहुत सकारात्मक प्रभाव पड़ता है। हालांकि, मेरे अनुभव में, 20 मिनट से अधिक एक हलचल है। यह शरीर को खुद को सामान्य करने के लिए पर्याप्त है। और शाब्दिक रूप से एक मिनट के बाद, जिसके दौरान मैं वास्तव में सोना जारी रखना चाहता हूं, शरीर जागता है, आप शक्ति महसूस करते हैं और ताकत की वृद्धि करते हैं।


दूसरी ओर, कई लोग एक कप कॉफी पसंद करते हैं। और यद्यपि ऐसा लगता है कि यह मदद करता है, वास्तव में, शरीर अपने संसाधनों को बहाल नहीं करता है, लेकिन केवल अधिक खो देता है। हाँ, और यह हानिकारक है।


सामान्य तौर पर, यह स्पष्ट है कि यह क्या है, है ना? हालाँकि, स्वाभाविक रूप से यह सवाल उठता है कि इसे कार्यालय में कैसे क्रैंक किया जाए। और बात यह है कि ज्यादातर बॉस इसे स्वीकार नहीं करते हैं। और सोफा हर जगह नहीं है। हां, और यदि आप अपने कार्यस्थल को महत्व देते हैं, तो आप अपने आप को इस पर झपकी लेने की अनुमति नहीं देंगे।


हालांकि, मैं भाग्यशाली था, मेरी कुर्सी बहुत पीछे झुक सकती है, और मैं आम तौर पर सिर्फ सोचकर काम कर सकता हूं। और सब कुछ ठीक होगा, अगर एक चीज के लिए नहीं।


मॉनिटर पर बिल्कुल स्थिर तस्वीर मुझे giblets के साथ धोखा देती है!


मैंने किसी तरह एक दोस्त के साथ इस समस्या को साझा किया, और उसने मज़ाक में काम का एक सिम्युलेटर बनाने की पेशकश की।
मुझे वास्तव में यह विचार पसंद आया, हालांकि, काम के एक पूर्ण सिम्युलेटर को लागू करने के लिए - यह क्या माना जाता है? यह क्या है, और मेरे लिए काम कर सकता है? सामान्य तौर पर, यह स्पष्ट है कि इसे बनाना बेहद कठिन होगा। लेकिन एक कार्य को सरल बना सकता है।


व्यवसाय द्वारा, मैं एक साधारण C ++ प्रोग्रामर हूं, और इसलिए बहुत बार इंटरनेट पर क्रॉल करता हूं और विभिन्न लेख पढ़ता हूं। इसके बिना, वे सभी इसे समझते हैं।


यदि आप एक ऐसे व्यक्ति का निरीक्षण करते हैं जो एक लंबा और जटिल लेख पढ़ता है, तो आप देखेंगे कि वह समय-समय पर लेख को ऊपर और नीचे स्क्रॉल करता है। और यही मैंने लागू करने का फैसला किया।
शाब्दिक रूप से इंटरनेट पर सर्फिंग के एक घंटे के बाद, तीन लेखों की सामग्री (एक खिड़की के बिना एक छिपे हुए आवेदन पर लेख, कीबोर्ड घटनाओं और अनुकरण करने वाले माउस घटनाओं पर कब्जा करने पर), एक सरल कार्यक्रम लागू किया गया था, जिसे मैं लोगों के साथ साझा करना चाहूंगा।


विचार इसके मूल में सरल है: यादृच्छिक माउस व्हील स्क्रॉल इवेंट। यही है, आप बस एक लेख चुनते हैं जो वर्तमान कार्य के लिए अधिक प्रामाणिक और अधिक जटिल है, सिम्युलेटर चालू करें, और शांति से सो जाएं। कार्यक्रम कार्य प्रबंधक (या मैं सिर्फ अंधा नहीं था और इसे वहां नहीं मिला) में दिखाई नहीं देता है, कुंजी संयोजन का उपयोग करके Ctrl + spacebar को रोक दिया जाता है, और निष्पादन को फिर से शुरू करता है, और जब आप नीचे तीर पर क्लिक करते हैं तो यह बंद हो जाता है। आप टास्कलिस्ट कमांड का उपयोग करके प्रोग्राम को कंसोल के माध्यम से देख सकते हैं, और यदि आवश्यक हो, तो आप टास्ककिल के माध्यम से इसे बंद करने के लिए इसके पीआईडी ​​का पता लगा सकते हैं।


मैं खुद कार्यक्रम कोड को पूरी तरह से नहीं समझता हूं, इसलिए कोई टिप्पणी नहीं होगी।


वास्तव में, कोड ही:


#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. } 

सरल कारणों से अनावश्यक टिप्पणियों और अन्य कचरे को कोड को मंजूरी नहीं दी जाती है जो किसी को समझने के लिए काम में आ सकती है। दुर्भाग्य से मैं आलसी के लिए निष्पादन योग्य फ़ाइल संलग्न नहीं कर सकता।


मैं यह नोट करना चाहूंगा कि मैं किसी को भी इस कार्यक्रम का उपयोग करने की अनुशंसा नहीं करता हूं, और मैं स्वयं इसका उपयोग करने का जोखिम नहीं उठाऊंगा। आखिरकार, यदि आप कार्यस्थल पर सिर्फ दर्जन भर हैं, तो यह खराब स्वास्थ्य, या छुट्टी की लंबी अनुपस्थिति, या कुछ और का उल्लेख करके समझाया जा सकता है। और अगर कोई समझता है कि आप उसे धोखा देने की कोशिश कर रहे हैं, तो यह पहले से ही बुरा, आक्रामक और अप्रिय होगा। और इससे आपके करियर पर सकारात्मक प्रभाव पड़ने की संभावना नहीं है।

Source: https://habr.com/ru/post/hi441096/


All Articles