Иконка в трее, все как обычно... При перезапуске Explorer.exe иконка из трея исчезает. При 'ModifyIcon' не появляется. Подскажите как сделать... У меня два варианта, либо что-то вроде 'ModifyIcon' гонять по таймеру, либо удалить и сделать новую, но как тогда отследить перезапуск Explorer'а... желательно по проще... вот.
После рестарта Explorer'а пересоздается TaskBar, и, естественно, тебе нужно пересоздать иконку... Чтобы не гонять таймер - обрабатывай TaskbarCreated...
{ Проверяешь, доступно ли тебе использование TaskbarCreated } function TaskbarCreatedAllowed:boolean; var ovi : TOSVersionInfo; begin Result:=false; FillChar(ovi,0,sizeof(TOSVersionInfo)); ovi.dwOSVersionInfoSize := sizeof(TOSVersionInfo); if not GetVersionEx(ovi) then exit; if ((ovi.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS) and (ovi.dwMajorVersion = 4) and (ovi.dwMinorVersion = 0)) then exit; //win95
Result:=true; end;
procedure TForm1.WndProc(var Message: TMessage); begin if ((WM_TASKBARRESTART<>0) and (Message.Msg=WM_TASKBARRESTART)) then // Вот этот момент - перезагрузка TaskBar-а PostMessage(Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
inherited; end;
Не забудь где-нибудь в Form1.Create сделать:
if TaskbarCreatedAllowed then WM_TASKBARRESTART:=RegisterWindowMessage('TaskbarCreated') else WM_TASKBARRESTART:=0