Russian Qt Forum
Ноябрь 05, 2024, 22:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Развернуть программно скрытый taskbar  (Прочитано 4510 раз)
baka
Гость
« : Март 25, 2009, 15:13 »

Добрый день,


можно ли как нибудь программно заставить развернуться, свернутую автоматически панель задач Windows, в трее которой находится мой QSystemTrayIcon.

т.е. когда иконка начинает анимиоваться,

пользователи у которых панель убирается автоматически этого не видят.
(в qip, icq - панель как то вынуждают всплыть).

я пробовал так
Код:
HWND trayWnd = FindWindow(L"Shell_TrayWnd", 0);
SendMessage(trayWnd, WM_MOUSEHOVER, MK_LBUTTON, 0);
//и так
PostMessage(trayWnd,WM_SETFOCUS,0,0);
//и так
ShowWindow(trayWnd, [с самыми разными параметрами ]);

можно еще попробовать Shell_NotifyIcon(NIM_SETFOCUS...),
но для этого надо знать HWND самой иконки,
(а чтоб узнать HWND придется переписывать сам QSystemTrayIcon)


в общем по winapi у меня практически нулевые знания, сам я не соображу че делать
разьве что вбить костыли в виде
Код:
FlashWindow(FindWindow([Первое попавшееся окно]), true);

Google-ил 2 дня, msdn смотрел но не нашел, даже на других форумах по winapi искал.

что делать не знаю.

  Плачущий
Записан
Rcus
Гость
« Ответ #1 : Март 25, 2009, 15:49 »

Ну зачем же переписывать. Под Windows не принято шарить C++ библиотеки, поэтому можно патчить Улыбающийся
QSystemTrayIcon::showMessage тоже вызывает отображение панели задач (и соответственно области уведомлений), но там нужно передавать текст, что не всегда уместно.
Записан
baka
Гость
« Ответ #2 : Март 25, 2009, 16:22 »

Да, я так тоже пробовал,
message потом остается висеть  Грустный
даже если msec = 1.

а у меня в этот момент должны еще всплывать самодельные окна с уведомлениями
как в qip, icq
(так кстати, появление taskbar'а как то реализованно)


Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Март 25, 2009, 16:46 »

если в qip'е это реализовано, надо поглядеть их исходник
Записан

Юра.
Rcus
Гость
« Ответ #4 : Март 25, 2009, 17:01 »

Ну вроде правильный ход мысли был с Shell_NotifyIcon. Судя по ./gui/util/qsystrayicon_win.cpp HWND иконки можно попробовать достать примерно так:
Код
C++ (Qt)
QSystrayIcon *trayIcon = new QSystrayIcon(this);
HWND hwnd = trayIcon->findChild<QWidget*>()->winId();
Хотя конечно лучше так не делать
Записан
Олег
Гость
« Ответ #5 : Апрель 02, 2009, 20:15 »

А где можно посмотреть исходники qip'a?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.179 секунд. Запросов: 23.