IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Вопрос: иконка в трее, При перезапуске Explorer'а пропадает иконка...
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской

Репутация: -  0  +


Иконка в трее, все как обычно... При перезапуске Explorer.exe иконка из трея исчезает.
При 'ModifyIcon' не появляется.
Подскажите как сделать...
У меня два варианта, либо что-то вроде 'ModifyIcon' гонять по таймеру,
либо удалить и сделать новую, но как тогда отследить перезапуск Explorer'а...
желательно по проще... вот.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






После рестарта Explorer'а пересоздается TaskBar, и, естественно, тебе нужно пересоздать иконку... Чтобы не гонять таймер - обрабатывай TaskbarCreated...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской

Репутация: -  0  +


А можно пример, обработки этого TaskbarCreated...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Можно... Что-то в этом роде:

Type TForm1 = class(TForm)
...
protected
procedure WndProc(var Message: TMessage); override;
end;

...

var
WM_TASKBARRESTART : DWORD;

{ Проверяешь, доступно ли тебе использование 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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 72
Пол: Мужской

Репутация: -  0  +


Всё работает, спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.09.2020 16:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name