LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == WM_TRAY) { if (lParam == WM_LBUTTONDOWN) { HookMouse(); } else if (lParam == WM_MBUTTONDOWN) { Sleep(3000); HookMouse(); } else if (lParam == WM_RBUTTONDOWN) { ShowContextMenu(hwnd); } } else if (msg == WM_TASKBARCREATED) { tray_added = 0; UpdateTray(); } else if (msg == WM_COMMAND) { int wmId = LOWORD(wParam), wmEvent = HIWORD(wParam); if (wmId == SWM_FIND) { HookMouse(); } else if (wmId == SWM_FINDDELAY) { Sleep(3000); HookMouse(); } else if (wmId == SWM_FINDALL) { FindAllWnds(); } else if (wmId == SWM_ABOUT) { MessageBox(NULL, l10n->about, l10n->about_title, MB_ICONINFORMATION|MB_OK); } else if (wmId == SWM_EXIT) { DestroyWindow(hwnd); } } else if (msg == WM_DESTROY) { showerror = 0; UnhookMouse(); RemoveTray(); PostQuitMessage(0); return 0; } else if (msg == WM_LBUTTONDOWN || msg == WM_MBUTTONDOWN || msg == WM_RBUTTONDOWN) { // Hide the window if clicked on, this might happen if it wasn't hidden by the hooks for some reason ShowWindow(hwnd, SW_HIDE); // Since we take away the cursor, make sure the mouse is unhooked UnhookMouse(); } return DefWindowProc(hwnd, msg, wParam, lParam); }
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == WM_TRAY) { if (lParam == WM_LBUTTONDOWN || lParam == WM_LBUTTONDBLCLK) { ToggleState(); } else if (lParam == WM_MBUTTONDOWN) { if ((GetAsyncKeyState(VK_SHIFT)&0x8000)) { ShellExecute(NULL, L"open", inipath, NULL, NULL, SW_SHOWNORMAL); } else { HookMouse(); } } else if (lParam == WM_RBUTTONUP) { ShowContextMenu(hwnd); } } else if (msg == WM_UPDATESETTINGS) { wchar_t txt[10]; // TimerCheck KillTimer(g_hwnd, CHECKTIMER); GetPrivateProfileString(L"General", L"TimerCheck", L"0", txt, ARRAY_SIZE(txt), inipath); if (_wtoi(txt)) { SetTimer(g_hwnd, CHECKTIMER, CHECKINTERVAL, NULL); } } else if (msg == WM_TASKBARCREATED) { tray_added = 0; UpdateTray(); } else if (msg == WM_COMMAND) { int wmId=LOWORD(wParam), wmEvent=HIWORD(wParam); if (wmId == SWM_TOGGLE) { ToggleState(); } else if (wmId == SWM_ELEVATE) { wchar_t path[MAX_PATH]; GetModuleFileName(NULL, path, ARRAY_SIZE(path)); int ret = (INT_PTR) ShellExecute(NULL, L"runas", path, NULL, NULL, SW_SHOWNORMAL); if (ret > 32) { DestroyWindow(hwnd); } } else if (wmId == SWM_AUTOSTART_ON) { SetAutostart(1, 0); } else if (wmId == SWM_AUTOSTART_OFF) { SetAutostart(0, 0); } else if (wmId == SWM_AUTOSTART_ELEVATE_ON) { SetAutostart(1, 1); } else if (wmId == SWM_AUTOSTART_ELEVATE_OFF) { SetAutostart(1, 0); } else if (wmId == SWM_TIMERCHECK_ON) { WritePrivateProfileString(L"General", L"TimerCheck", L"1", inipath); SendMessage(g_hwnd, WM_UPDATESETTINGS, 0, 0); } else if (wmId == SWM_TIMERCHECK_OFF) { WritePrivateProfileString(L"General", L"TimerCheck", L"0", inipath); SendMessage(g_hwnd, WM_UPDATESETTINGS, 0, 0); } else if (wmId == SWM_WEBSITE) { OpenUrl(APP_URL); } else if (wmId == SWM_XKILL) { HookMouse(); } else if (wmId == SWM_EXIT) { DestroyWindow(hwnd); } } else if (msg == WM_DESTROY) { showerror = 0; UnhookKeyboard(); UnhookMouse(); RemoveTray(); PostQuitMessage(0); } else if (msg == WM_LBUTTONDOWN || msg == WM_MBUTTONDOWN || msg == WM_RBUTTONDOWN) { // Hide the window if clicked on, this might happen if it wasn't hidden by the hooks for some reason ShowWindow(hwnd, SW_HIDE); // Since we take away the skull, make sure we can't kill anything UnhookMouse(); } else if (msg == WM_TIMER) { if (wParam == CHECKTIMER && ENABLED()) { if (GetAsyncKeyState(VK_LCONTROL)&0x8000 && GetAsyncKeyState(VK_LMENU)&0x8000 && GetAsyncKeyState(VK_F4)&0x8000) { // Get hwnd of foreground window HWND hwnd = GetForegroundWindow(); if (hwnd == NULL) { return DefWindowProc(hwnd, msg, wParam, lParam); } // Kill it! Kill(hwnd); } else { // Reset when the user has released the keys killing = 0; } } } return DefWindowProc(hwnd, msg, wParam, lParam); }
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == WM_TRAY) { if (lParam == WM_LBUTTONDOWN || lParam == WM_LBUTTONDBLCLK) { ToggleState(); if (lParam == WM_LBUTTONDBLCLK && !(GetAsyncKeyState(VK_SHIFT)&0x8000)) { SendMessage(hwnd, WM_OPENCONFIG, 0, 0); } } else if (lParam == WM_MBUTTONDOWN) { ShellExecute(NULL, L"open", inipath, NULL, NULL, SW_SHOWNORMAL); } else if (lParam == WM_RBUTTONDOWN) { ShowContextMenu(hwnd); } else if (lParam == NIN_BALLOONUSERCLICK) { hide = 0; SendMessage(hwnd, WM_COMMAND, SWM_UPDATE, 0); } else if (lParam == NIN_BALLOONTIMEOUT) { if (hide) { RemoveTray(); } } } else if (msg == WM_UPDATESETTINGS) { UpdateLanguage(); // Reload hooks if (ENABLED()) { UnhookSystem(); HookSystem(); } // Reload config language if (!wParam && IsWindow(g_cfgwnd)) { SendMessage(g_cfgwnd, WM_UPDATESETTINGS, 0, 0); } } else if (msg == WM_ADDTRAY) { hide = 0; UpdateTray(); } else if (msg == WM_HIDETRAY) { hide = 1; RemoveTray(); } else if (msg == WM_OPENCONFIG && (lParam || !hide)) { OpenConfig(wParam); } else if (msg == WM_CLOSECONFIG) { CloseConfig(); } else if (msg == WM_TASKBARCREATED) { tray_added = 0; UpdateTray(); } else if (msg == WM_COMMAND) { int wmId=LOWORD(wParam), wmEvent=HIWORD(wParam); if (wmId == SWM_TOGGLE) { ToggleState(); } else if (wmId == SWM_HIDE) { hide = 1; RemoveTray(); } else if (wmId == SWM_UPDATE) { if (MessageBox(NULL,l10n->update_dialog,APP_NAME,MB_ICONINFORMATION|MB_YESNO|MB_TOPMOST|MB_SETFOREGROUND) == IDYES) { OpenUrl(APP_URL); } } else if (wmId == SWM_CONFIG) { SendMessage(hwnd, WM_OPENCONFIG, 0, 0); } else if (wmId == SWM_ABOUT) { SendMessage(hwnd, WM_OPENCONFIG, 4, 0); } else if (wmId == SWM_EXIT) { DestroyWindow(hwnd); } } else if (msg == WM_QUERYENDSESSION && msghook) { showerror = 0; UnhookSystem(); } else if (msg == WM_DESTROY) { showerror = 0; UnhookSystem(); RemoveTray(); PostQuitMessage(0); } else if (msg == WM_LBUTTONDOWN || msg == WM_MBUTTONDOWN || msg == WM_RBUTTONDOWN) { // Hide cursorwnd if clicked on, this might happen if it wasn't hidden by hooks.c for some reason ShowWindow(hwnd, SW_HIDE); } return DefWindowProc(hwnd, msg, wParam, lParam); }