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