· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как обновить перечень иконок в трее?

Посл.отвђт Сообщенiе


Дата: Мар 5, 2003 16:35:51

Прога вырубает файервол (winrout) путем удаления процесса, но после удаления процесса в трее остается его иконка. Если "повозить" мышей по часикам иконка от вырубленного файервол-а пропадает.
Вопрос: Как обновить перечень иконок в трее?


Дата: Мар 18, 2003 02:39:40

Надеюсь разберёшся - прога работает корректно с этим моментом

.386
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\shell32.inc
include \masm32\include\winmm.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\winmm.lib

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

.DATA
ClassName db "CD jector",0
AppName db "Манипулятор приводом CD",0
IconName db "myicon"
Menu1 db "&О программе",0
Menu2 db "&Выход",0
AboutStr db "Программа управления лотком CD-ROM v. 1.02 (21.01.03) << Микулич В.А. >> mva_bad@mail.ru",0
CDOpenStr1 db "open cdaudio alias cd wait",0
CDOpenStr2 db "set cd door open",0
CDOpenStr3 db "close cd",0
CDCloseStr db "set cd door closed",0
; CDStatus db "status cd door",0
DevID DWORD 0
Flag WORD 0000

.DATA?
hInstance HINSTANCE ?
CommandLine LPSTR ?
SysIcon NOTIFYICONDATA < >
punct POINT < >
hMenu HMENU ?
MCIOpen MCI_OPEN_PARMS < >
buffer db 256 dup (?)
hic HANDLE ?

.CONST
IDM_ABOUT equ 21201
IDM_EXIT equ 21202
IDI_ICON1 equ 21222

.CODE
starting:

invoke GetModuleHandle, NULL
mov hInstance, eax
invoke GetCommandLine
mov CommandLine, eax
invoke WinMain, hInstance, NULL, CommandLine, SW_SHOWDEFAULT
invoke ExitProcess, NULL


WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD

LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND

mov wc.cbSize, SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground, COLOR_ACTIVEBORDER+1
mov wc.lpszMenuName, NULL
mov wc.lpszClassName, OFFSET ClassName
invoke LoadIcon, hInstance, 111
mov wc.hIcon, eax
mov wc.hIconSm,eax
invoke LoadCursor, NULL, IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx, NULL, addr ClassName, addr AppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL
mov hwnd,eax

invoke GetCurrentProcess
mov hic,eax
invoke SetPriorityClass, hic, IDLE_PRIORITY_CLASS

.WHILE TRUE
invoke GetMessage, addr msg, NULL, 0 ,0
.BREAK .IF (!eax)
invoke TranslateMessage, addr msg
invoke DispatchMessage, addr msg
.ENDW
mov eax, msg.wParam
ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY
invoke Shell_NotifyIcon, NIM_DELETE, addr SysIcon
invoke PostQuitMessage, NULL
.ELSEIF uMsg==WM_COMMAND
.IF wParam==IDM_EXIT
invoke Shell_NotifyIcon, NIM_DELETE, addr SysIcon
invoke PostQuitMessage, NULL
.ELSEIF wParam==IDM_ABOUT
invoke MessageBox, NULL, addr AboutStr, addr AppName, MB_OK
.ENDIF
.ELSEIF uMsg==WM_USER+100
.IF lParam==WM_LBUTTONDOWN
.IF Flag==0
invoke mciSendString, addr CDOpenStr1, NULL, NULL, NULL
.IF ax!=0
invoke mciGetErrorString, eax, addr buffer, 256
invoke MessageBox, NULL, addr buffer, addr AppName, MB_OK
.ENDIF
; invoke mciSendString, addr CDStatus, addr buffer, 256, NULL
; invoke MessageBox, NULL, addr buffer, addr AppName, MB_OK
invoke mciSendString, addr CDOpenStr2, NULL, NULL, NULL
.IF ax!=0
invoke mciGetErrorString, eax, addr buffer, 256
invoke MessageBox, NULL, addr buffer, addr AppName, MB_OK
.ENDIF
invoke mciSendString, addr CDOpenStr3, NULL, NULL, NULL
.IF ax!=0
invoke mciGetErrorString, eax, addr buffer, 256
invoke MessageBox, NULL, addr buffer, addr AppName, MB_OK
.ENDIF
xor ax,ax
add ax,1
mov Flag,ax
.ELSEIF
invoke mciSendString, addr CDOpenStr1, NULL, NULL, NULL
.IF ax!=0
invoke mciGetErrorString, eax, addr buffer, 256
invoke MessageBox, NULL, addr buffer, addr AppName, MB_OK
.ENDIF
invoke mciSendString, addr CDCloseStr, NULL, NULL, NULL
.IF ax!=0
invoke mciGetErrorString, eax, addr buffer, 256
invoke MessageBox, NULL, addr buffer, addr AppName, MB_OK
.ENDIF
xor ax,ax
mov Flag,ax
invoke mciSendString, addr CDOpenStr3, NULL, NULL, NULL
.IF ax!=0
invoke mciGetErrorString, eax, addr buffer, 256
invoke MessageBox, NULL, addr buffer, addr AppName, MB_OK
.ENDIF
.ENDIF

.ELSEIF lParam==WM_RBUTTONDOWN
invoke GetCursorPos, OFFSET punct
invoke CreatePopupMenu
mov hMenu, eax
invoke AppendMenu, hMenu, MF_ENABLED, IDM_ABOUT, addr Menu1
invoke AppendMenu, hMenu, MF_SEPARATOR, 0, 0800h
invoke AppendMenu, hMenu, MF_ENABLED, IDM_EXIT, addr Menu2
invoke SetForegroundWindow, hWnd
invoke TrackPopupMenu, hMenu, TPM_HORIZONTAL or TPM_LEFTALIGN, punct.x, punct.y, 0, hWnd, NULL
invoke DestroyMenu, hMenu
invoke PostMessage, hWnd, WM_USER, 0, 0
.ENDIF
.ELSEIF uMsg==WM_CREATE
mov SysIcon.cbSize, SIZEOF NOTIFYICONDATA
push hWnd
pop SysIcon.hwnd
mov SysIcon.uID, 32455
mov SysIcon.uFlags, NIF_MESSAGE or NIF_ICON
mov SysIcon.uCallbackMessage, WM_USER+100
invoke LoadIcon, hInstance, 111
mov SysIcon.hIcon, eax
mov SysIcon.szTip, NULL
invoke Shell_NotifyIcon, NIM_ADD, addr SysIcon
.ELSE
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
ret
.ENDIF
xor eax,eax
ret
WndProc endp

end starting

mailto:mva_bad@mail.ru


Дата: Мар 19, 2003 10:04:25

Спасибо !!!


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067