Проверить/отловить доступность TaskBar - как?
От: BurningInside Россия  
Дата: 28.11.12 17:18
Оценка:
Есть прога, автостартует. Винды после ХР что-то там улучшили с более быстрой загрузкой в итоге не всегда прога отображает иконку в трее. Далеко за примером ходить не надо: Essential Security, так что это не мои проги (руки) кривые .

А вот и вопрос: есть ли идеи, как проверить/отловить момент доступность/"отвечаемость" TaskBar? Есть ли "официальные" рекомендации как это кодить? Чтобы не колхозить с циклом. Или колхозить?
Re: Проверить/отловить доступность TaskBar - как?
От: okman Беларусь https://searchinform.ru/
Дата: 28.11.12 17:42
Оценка: +1
Здравствуйте, BurningInside, Вы писали:

BI>Есть прога, автостартует. Винды после ХР что-то там улучшили с более быстрой загрузкой в итоге не всегда прога отображает иконку в трее. Далеко за примером ходить не надо: Essential Security, так что это не мои проги (руки) кривые .


BI>А вот и вопрос: есть ли идеи, как проверить/отловить момент доступность/"отвечаемость" TaskBar? Есть ли "официальные" рекомендации как это кодить? Чтобы не колхозить с циклом. Или колхозить?


Посмотрите здесь — http://msdn.microsoft.com/en-us/library/windows/desktop/cc144179(v=vs.85).aspx
Нужно подписаться на событие "TaskbarCreated", оно приходит при запуске оболочки (и после ее
перезапуска тоже). Пришло событие — ок, можно звать Shell_NotifyIcon. На Vista и выше может
дополнительно потребоваться ChangeWindowMessageFilter(Ex). Например, если программа работает
на более высоком integrity level, чем оболочка (explorer.exe).
Re[2]: Проверить/отловить доступность TaskBar - как?
От: BurningInside Россия  
Дата: 28.11.12 18:34
Оценка:
Здравствуйте, okman, Вы писали:
O>Посмотрите здесь — http://msdn.microsoft.com/en-us/library/windows/desktop/cc144179(v=vs.85).aspx
O>Нужно подписаться на событие "TaskbarCreated", оно приходит при запуске оболочки (и после ее
O>перезапуска тоже). Пришло событие — ок, можно звать Shell_NotifyIcon. На Vista и выше может
O>дополнительно потребоваться ChangeWindowMessageFilter(Ex). Например, если программа работает
O>на более высоком integrity level, чем оболочка (explorer.exe).

Гениально
Re[3]: Проверить/отловить доступность TaskBar - как?
От: Carc Россия AmlPages.com — http://www.amlpages.com/home.php
Дата: 28.11.12 18:46
Оценка: 3 (1)
Здравствуйте, BurningInside, Вы писали:

BI>Здравствуйте, okman, Вы писали:

O>>Посмотрите здесь — http://msdn.microsoft.com/en-us/library/windows/desktop/cc144179(v=vs.85).aspx
O>>Нужно подписаться на событие "TaskbarCreated", оно приходит при запуске оболочки (и после ее
O>>перезапуска тоже). Пришло событие — ок, можно звать Shell_NotifyIcon. На Vista и выше может
O>>дополнительно потребоваться ChangeWindowMessageFilter(Ex). Например, если программа работает
O>>на более высоком integrity level, чем оболочка (explorer.exe).
BI>Гениально
Угу, но только если таскбар уже создан, и программа в автозапуске стартует несколько после его инициализации — то так до скончания веков и можно прождать сообщения "TaskbarCreated" — не вариант.

Кстати говоря, пока таскбар не создан Shell_NotifyIcon + NIM_ADD будет упорно возвращать FALSE.
Я делал иначе:
1. На WM_CREATE пробовал вписать свою иконку, благо приложение по жизни живет в трее.
2. Если не удавалось и Shell_NotifyIcon + NIM_ADD возвращал FALSE, тогда создавал фоновый поток.
3. Этот фоновый поток определенное число раз ждал секунды две-три в WaitForSingleObject, потом просыпался
и дергал окно которое должно было создать иконку в трее (ну что-то вроде RegisterWindowMessage+SendMessage)
4. Окно получало это сообщение от фонового потока, и опять пыталось вписать свою иконку в трей.
5. Если на этот раз удавалось, т.е. Shell_NotifyIcon + NIM_ADD все-таки отвечала TRUE, то в ответ на сообщение возвращало TRUE. Фоновый поток получал результат: что если мол TRUE, завершался. Если нет — опять по кругу — ждем пару-тройку секунд, и опять дергаем основное окно, чтобы попыталось впихнуть иконку.

Ну понятное дело, были мелочи, на которые нужно было обратить внимание. Фоновый поток ждал в WaitForSingleObject некий мьютекс единственный на приложение, который отвечал за запуск повторной копии софтины. Соответственно если софтина выходила раньше, чем удавалось впихнуть иконку, потом умирал своей собственной смертью. Ну и какие-то там параметры передавались потоку: сколько спать между попытками впихнуть иконку, сколько раз пытаться.

Проверял на 2-ух софтинах. Результат отличный — иконка встает в трей иногда с первого раза при автозапуске, иногда с третьего, иногда еще с какого. Но результат достигнут.
Aml Pages Home
Re[4]: Проверить/отловить доступность TaskBar - как?
От: BurningInside Россия  
Дата: 28.11.12 19:06
Оценка:
Здравствуйте, Carc, Вы писали:

C>Угу, но только если таскбар уже создан, и программа в автозапуске стартует несколько после его инициализации — то так до скончания веков и можно прождать сообщения "TaskbarCreated" — не вариант.


C>Кстати говоря, пока таскбар не создан Shell_NotifyIcon + NIM_ADD будет упорно возвращать FALSE.

C>Я делал иначе:
C>1. На WM_CREATE пробовал вписать свою иконку, благо приложение по жизни живет в трее.
C>2. Если не удавалось и Shell_NotifyIcon + NIM_ADD возвращал FALSE, тогда создавал фоновый поток.
C>3. Этот фоновый поток определенное число раз ждал секунды две-три в WaitForSingleObject, потом просыпался
C> и дергал окно которое должно было создать иконку в трее (ну что-то вроде RegisterWindowMessage+SendMessage)
C>4. Окно получало это сообщение от фонового потока, и опять пыталось вписать свою иконку в трей.
C>5. Если на этот раз удавалось, т.е. Shell_NotifyIcon + NIM_ADD все-таки отвечала TRUE, то в ответ на сообщение возвращало TRUE. Фоновый поток получал результат: что если мол TRUE, завершался. Если нет — опять по кругу — ждем пару-тройку секунд, и опять дергаем основное окно, чтобы попыталось впихнуть иконку.

C>Ну понятное дело, были мелочи, на которые нужно было обратить внимание. Фоновый поток ждал в WaitForSingleObject некий мьютекс единственный на приложение, который отвечал за запуск повторной копии софтины. Соответственно если софтина выходила раньше, чем удавалось впихнуть иконку, потом умирал своей собственной смертью. Ну и какие-то там параметры передавались потоку: сколько спать между попытками впихнуть иконку, сколько раз пытаться.


C>Проверял на 2-ух софтинах. Результат отличный — иконка встает в трей иногда с первого раза при автозапуске, иногда с третьего, иногда еще с какого. Но результат достигнут. и дергал окно которое должно было создать иконку в трее (ну что-то вроде RegisterWindowMessage+SendMessage)

CНу понятное дело, были мелочи, на которые нужно было обратить внимание. Фоновый поток ждал в WaitForSingleObject некий мьютекс единственный на приложение, который отвечал за запуск повторной копии софтины. Соответственно если софтина выходила раньше, чем удавалось впихнуть иконку, потом умирал своей собственной смертью. Ну и какие-то там параметры передавались потоку: сколько спать между попытками впихнуть иконку, сколько раз пытаться.

Ок, лучше Вашей схемы не придумать. Тоже будет поток, ну и из-за своей специфики без мьютекса, будет цикл на 10 шагов * внутренний Sleep(1000) итого 10 секунд. Если не будет хватать, можно 20 сек или бесконечно, пока TRUE не вернётся.
Re[5]: Проверить/отловить доступность TaskBar - как?
От: Carc Россия AmlPages.com — http://www.amlpages.com/home.php
Дата: 28.11.12 19:09
Оценка: +1
Здравствуйте, BurningInside, Вы писали:

[поскипано]
BI>Ок, лучше Вашей схемы не придумать. Тоже будет поток, ну и из-за своей специфики без мьютекса, будет цикл на 10 шагов * внутренний Sleep(1000) итого 10 секунд. Если не будет хватать, можно 20 сек или бесконечно, пока TRUE не вернётся.

Ну как-то так — у меня все-равно по любому был мьютекс, который отвечал за работу всего приложения (гуёвый поток, повторные копии, некоторые фоновые ожидалки в том числе и его ждали). Ну да это не суть — можно ждать объект, можно и просто поспать некоторое время.
Aml Pages Home
Re[4]: Проверить/отловить доступность TaskBar - как?
От: CEMb  
Дата: 29.11.12 02:11
Оценка:
Здравствуйте, Carc, Вы писали:

BI>>Гениально

C>Угу, но только если таскбар уже создан, и программа в автозапуске стартует несколько после его инициализации — то так до скончания веков и можно прождать сообщения "TaskbarCreated" — не вариант.

Я таскбар ищу через
m_hTray = FindWindowEx(NULL, NULL, _T("Shell_TrayWnd"),NULL);


Плюс проверка на видимость, потому что разных таскбаров в системе может быть много одновременно.
also, it's desktop photo frame
Re[5]: Проверить/отловить доступность TaskBar - как?
От: BurningInside Россия  
Дата: 29.11.12 15:17
Оценка:
Здравствуйте, CEMb, Вы писали:
CEM>Я таскбар ищу через
CEM>
CEM>m_hTray = FindWindowEx(NULL, NULL, _T("Shell_TrayWnd"),NULL);
CEM>


CEM>Плюс проверка на видимость, потому что разных таскбаров в системе может быть много одновременно.


Идея хорошая, но 1) таскбар может "не отвечать" 2) те же издержки, что и если просто проверять бай Шелл_НотифайАйкон, к тому же не так надёжно для данной задачи
Re[4]: Проверить/отловить доступность TaskBar - как?
От: fuyant  
Дата: 03.12.12 01:48
Оценка:
Здравствуйте, Carc, Вы писали:

C>Угу, но только если таскбар уже создан, и программа в автозапуске стартует несколько после его инициализации — то так до скончания веков и можно прождать сообщения "TaskbarCreated" — не вариант.


C>Кстати говоря, пока таскбар не создан Shell_NotifyIcon + NIM_ADD будет упорно возвращать FALSE.

C>Я делал иначе:

ммм... а в чем проблема то?
почему не создавать иконку и при старте, и при приходе TaskbarCreated?
ну, можно еще перед созданием делать NIM_DELETE на всякий случай
И создастся иконка в любом случае, или на старте программы, или после создания таскбара. Зачем такие сложности с потоками, циклами и мьютексами для такой простой задачи?
к тому же TaskbarCreated в любом случае нужно ловить, т.к. таскбар может рухнуть посреди работы или юзер может перегрузить эксплорер не вылогиниваясь
Re[5]: Проверить/отловить доступность TaskBar - как?
От: Carc Россия AmlPages.com — http://www.amlpages.com/home.php
Дата: 03.12.12 06:57
Оценка:
Здравствуйте, fuyant, Вы писали:

F>Здравствуйте, Carc, Вы писали:


C>>Угу, но только если таскбар уже создан, и программа в автозапуске стартует несколько после его инициализации — то так до скончания веков и можно прождать сообщения "TaskbarCreated" — не вариант.


C>>Кстати говоря, пока таскбар не создан Shell_NotifyIcon + NIM_ADD будет упорно возвращать FALSE.

C>>Я делал иначе:

F>ммм... а в чем проблема то?

F>почему не создавать иконку и при старте, и при приходе TaskbarCreated?
В том, что иконка не создается... И TaskBar вполне уже может быть создан, и и сообщение "TaskBarCreated" больше не придет. А все равно Shell_NotifyIcon + NIM_ADD вернет FALSE. И чего тогда ждать?
Aml Pages Home
Re[6]: Проверить/отловить доступность TaskBar - как?
От: fuyant  
Дата: 03.12.12 12:25
Оценка:
Здравствуйте, Carc, Вы писали:

F>>ммм... а в чем проблема то?

F>>почему не создавать иконку и при старте, и при приходе TaskbarCreated?
C>В том, что иконка не создается... И TaskBar вполне уже может быть создан, и и сообщение "TaskBarCreated" больше не придет. А все равно Shell_NotifyIcon + NIM_ADD вернет FALSE. И чего тогда ждать?

я вот с таким никогда не сталкивался, если честно
есть какой-то момент, когда таскбар создан, но не хочет принимать на себя иконку и Shell_NotifyIcon + NIM_ADD вернет FALSE?
по твоим словам,
C>Кстати говоря, пока таскбар не создан Shell_NotifyIcon + NIM_ADD будет упорно возвращать FALSE.
т.е. false оно возвращает только когла нет таскбара. С другой стороны, ты говоришь, что
C>И TaskBar вполне уже может быть создан, и и сообщение "TaskBarCreated" больше не придет.
я вот немного запутался.

почему меня все это удивляет, ты вот говоришь, что
C>Проверял на 2-ух софтинах. Результат отличный — иконка встает в трей иногда с первого раза при автозапуске, иногда с третьего, иногда еще с какого. Но результат достигнут.
с другой стороны, я создавал иконоки на XP/Win7 тем простым способом, что я писал
Две такие свои программы сам у себя же и использую уже года четыре. И вот честно говоря не помню, чтобы не появилась у них иконка (конечно же, мог не обратить внимания). ОДна программа запускается через Run ключ реестра, другая — через виндовый шедулер.
И мне сильно интересно, если и в самом деле есть какой косяк, а я просто его не замечал.
С другой стороны, у меня еще автостартует proxess explorer, так вот его икона в трее иногда может не появиться.
Re[7]: Проверить/отловить доступность TaskBar - как?
От: Carc Россия AmlPages.com — http://www.amlpages.com/home.php
Дата: 03.12.12 12:59
Оценка:
Здравствуйте, fuyant, Вы писали:

F>Здравствуйте, Carc, Вы писали:


F>>>ммм... а в чем проблема то?

F>>>почему не создавать иконку и при старте, и при приходе TaskbarCreated?
C>>В том, что иконка не создается... И TaskBar вполне уже может быть создан, и и сообщение "TaskBarCreated" больше не придет. А все равно Shell_NotifyIcon + NIM_ADD вернет FALSE. И чего тогда ждать?

F>я вот с таким никогда не сталкивался, если честно

А я вот регулярно... Через день это в течении месяцев наблюдал. И все никак в толк не мог взять — что за фигня, ну нету иконки. Причем не всегда — сегодня есть, завтра нету. На это старте винды иконка есть, на следующем нету. И исключительно в результате автозапуска софтины. Если ручками пустить, все отлично.
Все на свой код косяки кидал, а потом когда и второй проект начала такие же фортеля выкидывать, заставило призадуматься.

F>есть какой-то момент, когда таскбар создан, но не хочет принимать на себя иконку и Shell_NotifyIcon + NIM_ADD вернет FALSE?

F>по твоим словам,
C>>Кстати говоря, пока таскбар не создан Shell_NotifyIcon + NIM_ADD будет упорно возвращать FALSE.
F>т.е. false оно возвращает только когла нет таскбара.
Я что-то говорю!?! Я ничего не говорю. Говорит MSDN. Что FALSE означает неудачу. Про причину они как всегда умалчивают.

F>С другой стороны, ты говоришь, что

C>>И TaskBar вполне уже может быть создан, и и сообщение "TaskBarCreated" больше не придет.
F>я вот немного запутался.
Все просто: к моменту старта софтины тескбар уже создан, и соответственно рассылать сообщение "TaskBarCreated" он уже больше не будет. Т.к. уже создан. А мои две софтины, стоящие в автостарте судя по всему попадают где-то в промежуток. Т.е. они попросту не успевают получить TaskBarCreated, именно потому что они подписываются на его получение (пущают свою WndProc несколько позже). Соответственно дожидаться больше нечего. Таскбар есть, сообщение больше рассылаться не будет. Полагаться на поиски через FindWindow в те еще прятки играть с Microsoft. Завтра они что-нить переименуют в классах окна, и код нерабочим становится. Остается только полагаться на Shell_NotifyIcon + NIM_ADD.

F>почему меня все это удивляет, ты вот говоришь, что

C>>Проверял на 2-ух софтинах. Результат отличный — иконка встает в трей иногда с первого раза при автозапуске, иногда с третьего, иногда еще с какого. Но результат достигнут.
F>с другой стороны, я создавал иконоки на XP/Win7 тем простым способом, что я писал
F>Две такие свои программы сам у себя же и использую уже года четыре. И вот честно говоря не помню, чтобы не появилась у них иконка (конечно же, мог не обратить внимания). ОДна программа запускается через Run ключ реестра, другая — через виндовый шедулер.
F>И мне сильно интересно, если и в самом деле есть какой косяк, а я просто его не замечал.
Регулярный это косяк. Хотя я не уверен что дело исключительно в Windows... Тут может быть еще и сторонние поделки помогают, вроде антивирей со своими песочницами (не проверял, просто на вскидку предположение, исключительно из моей ситуации). Но только пользователю от этого не легче. Иконки нет.
F>С другой стороны, у меня еще автостартует proxess explorer, так вот его икона в трее иногда может не появиться.

Тот самый случай между прочим. Я за PE тоже что-то такое видел. И главное, по предположениям сходится).
Aml Pages Home
Re[4]: Проверить/отловить доступность TaskBar - как?
От: Andrew S Россия http://alchemy-lab.com
Дата: 06.12.12 00:11
Оценка:
C>Угу, но только если таскбар уже создан, и программа в автозапуске стартует несколько после его инициализации — то так до скончания веков и можно прождать сообщения "TaskbarCreated" — не вариант.

Это не так. Все, что надо — на WM_CREATE перед созданием иконки _сначала_ зарегистрировать сообщение, а затем поискать Shell_TrayWnd. Если найдено — идти регистрировать, добавление в этом случае вернет ошибку только если действительно проблемы у эксплорера, но тогда ждать бессмысленно.


PS Я смотрю, вы не ищете простых путей решения задач, да...
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[5]: Проверить/отловить доступность TaskBar - как?
От: Carc Россия AmlPages.com — http://www.amlpages.com/home.php
Дата: 14.12.12 16:21
Оценка: 3 (1)
Здравствуйте, Andrew S, Вы писали:

C>>Угу, но только если таскбар уже создан, и программа в автозапуске стартует несколько после его инициализации — то так до скончания веков и можно прождать сообщения "TaskbarCreated" — не вариант.


AS>Это не так. Все, что надо — на WM_CREATE перед созданием иконки _сначала_ зарегистрировать сообщение, а затем поискать Shell_TrayWnd. Если найдено — идти регистрировать, добавление в этом случае вернет ошибку только если действительно проблемы у эксплорера, но тогда ждать бессмысленно.



AS>PS Я смотрю, вы не ищете простых путей решения задач, да...

Для решения да... легких путей не ищем. Ищем другое — решение.
Все проще оказалось. Покопался в логах, в общем судя по ним трей-бар уже есть FindWindow "ShellTrayWnd" уже его видит. Но все равно ShellNotify_Icon + NIM_ADD возвращала FALSE. И фишка была закопана в GetLastError после операции — возвращала ERROR_TIMEOUT.

Так что хоть доуподписывайтесь вы на "TaskBarCreated" в такой стадии оно больше не придет, т.к. оно уже просто давным-давно пролетело мимо еще до нашей WM_CREATE. Что интересно, то мой код исключительно для проверки на всякий случай подписывался на TaskBarCreated, ан хрен! нету его — ибо как сказал выше, прошло уже.

PS: что характерно, код не тестовый, а из живого реального проекта — который уже по всей сети бинарниками расползся по варезникам. Это вам не на поделках в лабораторных условиях проверять.
Aml Pages Home
Re[6]: Проверить/отловить доступность TaskBar - как?
От: Andrew S Россия http://alchemy-lab.com
Дата: 14.12.12 20:15
Оценка: -1
C>>>Угу, но только если таскбар уже создан, и программа в автозапуске стартует несколько после его инициализации — то так до скончания веков и можно прождать сообщения "TaskbarCreated" — не вариант.

AS>>Это не так. Все, что надо — на WM_CREATE перед созданием иконки _сначала_ зарегистрировать сообщение, а затем поискать Shell_TrayWnd. Если найдено — идти регистрировать, добавление в этом случае вернет ошибку только если действительно проблемы у эксплорера, но тогда ждать бессмысленно.



AS>>PS Я смотрю, вы не ищете простых путей решения задач, да...

C>Для решения да... легких путей не ищем. Ищем другое — решение.
C>Все проще оказалось. Покопался в логах, в общем судя по ним трей-бар уже есть FindWindow "ShellTrayWnd" уже его видит. Но все равно ShellNotify_Icon + NIM_ADD возвращала FALSE. И фишка была закопана в GetLastError после операции — возвращала ERROR_TIMEOUT.

Код и условия воспроизведения в студию. Пенисометрией у кого больше кода и где работает я заниматься не собираюсь — это неконструктивно. Жалоб на вариант c регистрацией сообщения + FindWindow не было.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[7]: Проверить/отловить доступность TaskBar - как?
От: Carc Россия AmlPages.com — http://www.amlpages.com/home.php
Дата: 14.12.12 21:03
Оценка:
AS>Код и условия воспроизведения в студию. Пенисометрией у кого больше кода и где работает я заниматься не собираюсь — это неконструктивно. Жалоб на вариант c регистрацией сообщения + FindWindow не было.
...
class CAutoLastError {
private:
    void* operator new(size_t);
    const DWORD m_dwPrevError;
public:
    CAutoLastError():m_dwPrevError(::GetLastError())
    {
        SetLastError(0);
    }
    ~CAutoLastError()
    {
        SetLastError(m_dwPrevError);
    }
};
//...
BOOL CWndForTray::Install2TrayInternal(const BOOL bModifyOrAdd
                                       , const BOOL bShowInfoBallon
                                       , LPCTSTR lpszAddTextToBallon)
{
//...
    NOTIFYICONDATA ni={0};
    ni.cbSize=sizeof(ni);
//...
    ni.uCallbackMessage=GetTrayMessage();
    ni.uFlags=NIF_TIP|NIF_MESSAGE|NIF_ICON;
//...
    const BOOL b=Shell_NotifyIcon(bModifyOrAdd ? NIM_MODIFY : NIM_ADD,&ni);
    return b;
}

//...

//вот она сия фунция с лог-репортом в файл, остальное выше исключительно для ясности привел
BOOL CWndForTray::Install2Tray(const BOOL bShowInfoBallon)
{
    const BOOL bFindTray=(NULL != FindWindowEx(NULL,NULL,TEXT("Shell_TrayWnd"),NULL));
    const CAutoLastError le;//обнуление ошибки
    const BOOL bRet=Install2TrayInternal(FALSE/*FALSE - for NIM_ADD, TRUE for NIM_MODIFY*/,bShowInfoBallon,NULL);
    
    if (!bRet) {        
        CString strLog;
        strLog.Format(TEXT("Cannot install tray icon. Last Error: %d, TrayWindow Is Finded=%d"),GetLastError(),bFindTray);
        CLogReportToFile::WriteLog(strLog);
    }

    return bRet;
}

Условия простые. Именно на автостарте софтины с виндой иногда не показывается иконка в трее.
1) Именно на автостарте — пущаем ручками, ясное дело все ок. Думаю, автостарт важно — у многих куча дряни грузится и у меня также от антивиря до всякой мелочи. Поэтому явно системе походу есть чем заняться в этот момент. Соответственно и код ошибки говорящий ERROR_TIMEOUT...

2) Проект живой. Есть соседний проект схожий по условиям (тулза в автостарте, иконка в трей). Но там другой код. А подобная проблема, что иконка иногда не ставится в трей при запуске, точно так же проявлялась ни по разу.

3) Такая же ситуация с "пропажей" (не-установкой) иконки в автостарте много где проявляется и в чужом софте. TrayIt к примеру часто не проявляется, FlashPaste не проявляется иногда. Так что на кривость исключительно своих рук валить не приходится.

И потом. Как говорил выше. Ну а если завтра MS сменит имя класса окна с ShellTrayWnd на другое? Что тогда? Код перестанет работать. (это нормально — никто не документировал и не клялся по жизни не изменять имена классов окон). А такое бывало. Подробности не помню, но в старых виндах к примеру, панель вкладок (Taskbar) это именно TabCtrl, а вот в поновее версиях (не помню, ни то 2К, ни то с XP) — это Toolbar. Это как иллюстрацию привожу. Когда деваться некуда, можно конечно использовать и имена классов. Но если есть способ и надежнее, зачем?
Aml Pages Home
Re[8]: Проверить/отловить доступность TaskBar - как?
От: Andrew S Россия http://alchemy-lab.com
Дата: 14.12.12 22:28
Оценка:
C>Условия простые. Именно на автостарте софтины с виндой иногда не показывается иконка в трее.
C>1) Именно на автостарте — пущаем ручками, ясное дело все ок. Думаю, автостарт важно — у многих куча дряни грузится и у меня также от антивиря до всякой мелочи. Поэтому явно системе походу есть чем заняться в этот момент. Соответственно и код ошибки говорящий ERROR_TIMEOUT...

На какой системе воспроизводится (берем _чистую_ систему)?
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[9]: Проверить/отловить доступность TaskBar - как?
От: Carc Россия AmlPages.com — http://www.amlpages.com/home.php
Дата: 15.12.12 09:01
Оценка:
Здравствуйте, Andrew S, Вы писали:

C>>Условия простые. Именно на автостарте софтины с виндой иногда не показывается иконка в трее.

C>>1) Именно на автостарте — пущаем ручками, ясное дело все ок. Думаю, автостарт важно — у многих куча дряни грузится и у меня также от антивиря до всякой мелочи. Поэтому явно системе походу есть чем заняться в этот момент. Соответственно и код ошибки говорящий ERROR_TIMEOUT...

AS>На какой системе воспроизводится (берем _чистую_ систему)?

XP SP3.
Aml Pages Home
Re[10]: Проверить/отловить доступность TaskBar - как?
От: BurningInside Россия  
Дата: 15.12.12 10:01
Оценка:
А у меня комп не выключается, спящий/ждущий режим. Случайно узнал об это проблеме. Перегружаю редко, пару раз замечал, что иконок у программ нет, не понял из-за чего. А тут ставил кучу обновлений с множеством перезагрузок и разул глаза.
Re[11]: Проверить/отловить доступность TaskBar - как?
От: Carc Россия AmlPages.com — http://www.amlpages.com/home.php
Дата: 15.12.12 10:46
Оценка:
Здравствуйте, BurningInside, Вы писали:

BI>А у меня комп не выключается, спящий/ждущий режим. Случайно узнал об это проблеме. Перегружаю редко, пару раз замечал, что иконок у программ нет, не понял из-за чего. А тут ставил кучу обновлений с множеством перезагрузок и разул глаза.


Проблема много где проявляется. В немалой куче стороннего софта. А неудобно сильно. Прям хоть какую тулзу написать, чтобы в соседних программах правила сие дело.
Aml Pages Home
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.