Tak więc to czego potrzebujemy to automatyczne przywracanie ikony w tray-u po restarcie explorer-a. Korzystamy tutaj z message-a jaki explorer wyśle do nas w momencie utworzenia paska zadań. Wiadomość ta nie ma przypisanego kodu, explorer rejestruje ją za pomocą nazwy
TaskbarCreated. Po pierwsze potrzebujemy eksportu do funkcji rejestrowania wiadomości:
[DllImport("user32.dll", SetLastError=true, CharSet=CharSet.Auto)]
private static extern uint RegisterWindowMessage(string a_name);Sama rejestracja:
private uint WM_TASKBARCREATED;
WM_TASKBARCREATED = RegisterWindowMessage("TaskbarCreated");I przechwytywanie wiadomości:
protected override void WndProc(ref Message a_msg)
{
if (a_msg.Msg == WM_TASKBARCREATED)
{
if (notifyIcon.Visible)
notifyIcon.Visible = true;
}
base.WndProc(ref a_msg);
}
Brak komentarzy:
Prześlij komentarz