diff --git a/Puer.exe b/Puer.exe index 57b5a3c..37f20b3 100644 Binary files a/Puer.exe and b/Puer.exe differ diff --git a/include/template.inc b/include/template.inc index 1e9992b..9a123b3 100644 --- a/include/template.inc +++ b/include/template.inc @@ -14,7 +14,8 @@ WM_SHELLNOTIFY equ WM_USER+5 .data? hInstance HINSTANCE ? ; Хэндл нашей пpогpаммы CommandLine LPSTR ? -hIcon dq ? ; icon handle +hIcon dq ? +sleepBlockEnabled dq ? TRAYICONDATAA STRUCT cbSize DWORD ? @@ -71,3 +72,4 @@ IDM_RESTORE equ 1000 IDM_EXIT equ 1010 IDI_ICON equ 1020 +IDI_ICON2 equ 1030 diff --git a/src/Puer.asm b/src/Puer.asm index aae76de..011da71 100644 --- a/src/Puer.asm +++ b/src/Puer.asm @@ -60,6 +60,7 @@ WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .if rax ==-1 invoke PostQuitMessage,NULL ; выходим из пpогpаммы .else + mov sleepBlockEnabled,1 mov rax,0 ret .endif @@ -83,6 +84,36 @@ WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .endif mov rax,0 ret + .elseif uMsg==WM_SHELLNOTIFY + .if wParam==IDI_TRAY + .if lParam==WM_LBUTTONDBLCLK + .if sleepBlockEnabled==1 + invoke SetThreadExecutionState,ES_CONTINUOUS + invoke LoadIcon,hInstance,IDI_ICON2 + .if rax==0 + invoke LoadIcon,NULL,IDI_APPLICATION + .endif + mov hIcon,rax + mov note.hIcon,rax + mov note.uFlags,NIF_ICON + invoke Shell_NotifyIconA,NIM_MODIFY,addr note + mov sleepBlockEnabled,0 + .else + invoke SetThreadExecutionState,ES_CONTINUOUS or ES_SYSTEM_REQUIRED or ES_DISPLAY_REQUIRED + invoke LoadIcon,hInstance,IDI_ICON + .if rax==0 + invoke LoadIcon,NULL,IDI_APPLICATION + .endif + mov hIcon,rax + mov note.hIcon,rax + mov note.uFlags,NIF_ICON + invoke Shell_NotifyIconA,NIM_MODIFY,addr note + mov sleepBlockEnabled,1 + .endif + .endif + .endif + mov rax,0 + ret .elseif uMsg==WM_PAINT invoke myPaint,hWnd .elseif uMsg==WM_ERASEBKGND @@ -111,3 +142,5 @@ myPaint proc hWndPaint:HWND myPaint endp end + +