Alexanbar писал(а):За появление иконки в трее отвечает окно класса Shell_Traywnd. В типовом варанте создаётся проводником, если он используется как оболочка. Соответственно, до того момента, как запустится оболочка, ничего посылать значки в трей не должно.
Alexanbar писал(а):Также программа должна отслеживать пользовательское сообщение "TASKBARCREATED" (регистрируется через RegisterWindowmessage), чтобы обновить значок в трее. Это поможет восстановить значок в трее при перезапуске проводника, а также помочь решению проблемы, заявленной в теме.
Каким образом определить, что еще до того или уже после?
awl100Alex писал(а):Pantalone
Ты так и не ответил на мой вопрос: почему важно?.. Хочу уточнить - для чего весь этот сыр-бор нужен?
Public Const strTaskbarCtreared = "TaskbarCreated"
Public WM_TASKBARCREATED as long
Public oldWndProc&
....
sub Form_load
WM_TASKBARCREATED = RegisterWindowMessage(strTaskbarCtreared)
....
oldWndProc& = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WndProc)
end sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
....
SetWindowLong hwnd, GWL_WNDPROC, oldWndProc
....
end sub
'в модуле:
Public Function WndProc(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
dim NID As NOTIFYICONDATA
Select Case wMsg
.......
Case WM_TASKBARCREATED
.....
Ret = Shell_NotifyIcon(NIM_MODIFY, NID)
End Select
WndProc = CallWindowProc(oldWndProc, hwnd, wMsg, wParam, lParam)
End Function
end sub
Сейчас этот форум просматривают: AhrefsBot и гости: 74