|
|
| Посл.отвђт | Сообщен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 |