Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Развернуть программу из трея 
:(
    Опции темы
greys
Дата 26.3.2016, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.3.2016

Репутация: нет
Всего: нет



Здравствуйте!


Есть программа, которая при запуске сразу сворачивается иконкой в трей. Какого-либо штатного способа запустить её открытой нет. Мне необходимо программно её развернуть.

Третий день бьюсь - ничего не получается. Перерыл весь интернет - рабочего решения не нашел. Как я понял, обратиться программно к значку иконке в трее нельзя, но вроде бы если послать хэндлу программы, который я нахожу с помощью FindWindow, все те команды, что посылаются при клике по значку, то окно должно теорически развернуться.

Верно? Если да, помогите перевести на язык программирования лог программы Spy++.

Заранее спасибо!


00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
00B400E6 S WM_PSD_FULLPAGERECT hDC:00000064 lprcPage:00000200 [wParam:00000064 lParam:00000200]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
00B400E6 S WM_PSD_FULLPAGERECT hDC:00000064 lprcPage:00000200 [wParam:00000064 lParam:00000200]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
00B400E6 S WM_PSD_FULLPAGERECT hDC:00000064 lprcPage:00000200 [wParam:00000064 lParam:00000200]
00B400E6 S WM_PSD_FULLPAGERECT hDC:00000064 lprcPage:00000201 [wParam:00000064 lParam:00000201]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
004403DA S WM_NCCREATE lpcs:0012F460 [wParam:00000000 lParam:0012F460]
004403DA R WM_SIZE lResult:00000000
004403DA R message:0x040A [User-defined:WM_USER+10] lResult:00000001
004D0328 S WM_WINDOWPOSCHANGING lpwp:0012F744 [wParam:00000000 lParam:0012F744]
003802F2 S WM_WINDOWPOSCHANGED lpwp:0012F744 [wParam:00000000 lParam:0012F744]
007603CC R WM_WINDOWPOSCHANGING lResult:00000000
00330326 R WM_WINDOWPOSCHANGING lResult:00000000
037D0306 R WM_NCCREATE fContinue:True [lResult:00000001]
037D0306 R WM_PARENTNOTIFY lResult:00000000
037D0306 R WM_PARENTNOTIFY lResult:00000000
037D0306 R WM_COMMAND lResult:00000000
00220512 S EM_SETMARGINS fwMargin:EC_LEFTMARGIN | EC_RIGHTMARGIN wLeft:0 wRight:0 [wParam:00000003 lParam:00000000]
00220512 R WM_WINDOWPOSCHANGED lResult:00000000
037D0306 R WM_COMMAND lResult:00000000
002E065A S WM_MOVE xPos:210 yPos:4 [wParam:00000000 lParam:000400D2]
002E065A R WM_WINDOWPOSCHANGED lResult:00000000
025D0108 R WM_WINDOWPOSCHANGED lResult:00000000
13960056 S WM_WINDOWPOSCHANGING lpwp:0012F7A8 [wParam:00000000 lParam:0012F7A8]
13960056 R WM_WINDOWPOSCHANGED lResult:00000000
000E0608 R WM_CREATE fContinue:0 (continue creation) [lResult:00000000]
000E0608 R WM_WINDOWPOSCHANGED lResult:00000000
002705F6 S WM_CREATE lpcs:0012F258 [wParam:00000000 lParam:0012F258]
00C900EE R message:0x1309 [User-defined:WM_USER+3849] lResult:00000001
13960056 R message:0x1328 [User-defined:WM_USER+3880] lResult:00000000
00C900EE R WM_SIZE lResult:00000000
00C50086 S WM_WINDOWPOSCHANGING lpwp:0012F5B4 [wParam:00000000 lParam:0012F5B4]
00C900EE S message:0x1328 [User-defined:WM_USER+3880] wParam:00000000 lParam:0012F044
13960056 S message:0x1328 [User-defined:WM_USER+3880] wParam:00000000 lParam:0012EFF0
00B400E6 S WM_WINDOWPOSCHANGING lpwp:0012F710 [wParam:00000000 lParam:0012F710]
13960056 R message:0x1328 [User-defined:WM_USER+3880] lResult:00000000
00B400E6 S WM_WINDOWPOSCHANGING lpwp:0012F5BC [wParam:00000000 lParam:0012F5BC]
00B400E6 R WM_GETTEXT cchCopied:14 lpszText:0012EA60 ("User Gate V2.8") [lResult:0000000E]
00B400E6 S message:0xB000 [User-defined:WM_APP+12288] wParam:00000000 lParam:00000000
13960056 R message:0xB01A [User-defined:WM_APP+12314] lResult:00000000
00B400E6 S WM_GETTEXT cchTextMax:510 lpszText:0012EA10 [wParam:000001FE lParam:0012EA10]
00B400E6 R WM_GETTEXT cchCopied:14 lpszText:0012EA10 ("User Gate V2.8") [lResult:0000000E]
00B703F0 S WM_ERASEBKGND hdc:13011338 [wParam:13011338 lParam:00000000]
004403DA R WM_NCPAINT lResult:00000000
00B400E6 S WM_WINDOWPOSCHANGED lpwp:0012F77C [wParam:00000000 lParam:0012F77C]
00B400E6 S WM_SIZE fwSizeType:SIZE_RESTORED nWidth:619 nHeight:486 [wParam:00000000 lParam:01E6026B]
13960056 R WM_IME_SETCONTEXT lResult:00000000
13960056 S WM_IME_SETCONTEXT fSet:1 iShow:C000000F [wParam:00000001 lParam:C000000F]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
037D0306 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
037D0306 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
037D0306 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
037D0306 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
037D0306 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
037D0306 R WM_CTLCOLORSTATIC hBrush:94100FC2 [lResult:94100FC2]
004D0328 R message:0xBD38 [User-defined:WM_APP+15672] lResult:CF100720
001D0590 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
001D0590 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
00B400E6 R WM_PSD_FULLPAGERECT fPreventDraw:False [lResult:00000000]
001D0590 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
001D0590 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
001D0590 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
001D0590 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
001D0590 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
PM MAIL   Вверх
greys
Дата 26.3.2016, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.3.2016

Репутация: нет
Всего: нет



Нашел другой вариант, но он как-то криво работает: не отображается содержимое окна/вкладок и самое главное - нет статусбара, а из него мне нужно считывать данные.

Код

wnd = FindWindow(NULL, "app");
if (wnd!=NULL)
{
ShowWindow(wnd,SW_SHOWMAXIMIZED);
  
wnd= ::GetWindow (wnd, GW_CHILD);
ShowWindow(wnd,SW_SHOW);


Подскажите, можно ли как-то послать другому окну команду, чтобы оно отобразило статусбар?
PM MAIL   Вверх
YDean
Дата 26.3.2016, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 7.9.2009

Репутация: 1
Всего: 1



Судя по
0x040A [User-defined:WM_USER+10]
создатель программы регистрирует значок в трее функцией Shell_NotifyIcon
с указателем на NOTIFYICONDATA, содержащем в uCallbackMessage значение WM_USER + 10.

Если окну программы послать WM_USER+10 с правильными wParam и lParam, оно должно развернуться.
wParam - идентификатор значка. (Кто знает, что он там прописал, и анализирует ли он его при приёме?)
lParam - мышиное сообщение  (WM_LBUTTONDBLCLK ?)
PM   Вверх
leniviy
Дата 27.3.2016, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: 1
Всего: 5



Я бы не заморачивался с c++, а скачал бы старый добрый autohotkey

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
greys
Дата 27.3.2016, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.3.2016

Репутация: нет
Всего: нет



Цитата(leniviy @  27.3.2016,  11:10 Найти цитируемый пост)
autohotkey

Эту программу не пробовал, пробовал autoit - она не помогла, т.к. не может кликать по конкетрной иконке в трее, если положение иконки все время разное.


YDean, спасибо за наводу. Сделал:
            SendMessage(wnd,WM_USER+1,NULL,WM_LBUTTONDBLCLK);
и все разработало как надо!

Даже как-то не верится что все так просто. Как-то подозрительно просто smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1260 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.