Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Вниз

Как развернуть приложение из трея?   Найти похожие ветки 

 
IceBeerg ©   (2006-06-30 16:18) [0]

Собственно сабж.
Никак не получается. Для отображения в трее используется TRxTrayIcon, ShowWindow не проходить SendMessage(...,WM_ACTIVATEAPP не проходит, а так же WM_SHOWWINDOW.
Уже и WinSight"ом смотрел, делаю wm_user+... неполучается

Программа - Intercom - для обмена сообщениями по сети
КАК РАЗВЕРНУТЬ ЭТУ ПРОГУ ИЗ ТРЕЯ???

Вот лог WinSight"а при ручной "активации":
* WinSight message trace Fri Jun 30 2006 12:20:23 *
000028:00010168 "intercom"  WM_WINDOWPOSCHANGING (4604X) Sent   wp=00000000  lp=0012FC2C  (0,0)-(0,0)    Z-Order Top
000029:00010168 "intercom"  WM_WINDOWPOSCHANGED (4704X) Sent   wp=00000000  lp=0012FC2C  (-32000,-32000)-(-31840,-31969)    NoSize,  NoMove,  NoRedraw  Z-Order After hwnd 000102DEh
000030:00010168 "intercom"  WM_ACTIVATEAPP (1c04X) Sent   wp=00000001  lp=00000000  Activate from  task 00000000
000031:00010168 "intercom"  WM_NCACTIVATE (8604X) Sent   wp=00200000  lp=00000000  Deactivate  Minimize to hwnd 00000000
000032:00010168 "intercom"  WM_ACTIVATE (604X) Sent   wp=00200001  lp=00000000  Activate  Minimize from hwnd 00000000
000033:00010168 "intercom"  WM_QUERYOPEN (1304X) Sent   wp=00000000  lp=00000000
000034:00010168 "intercom"  WM_WINDOWPOSCHANGING (4604X) Sent   wp=00000000  lp=0012FC18  (0,0)-(0,0)    Z-Order Top
000035:00010168 "intercom"  WM_NCCALCSIZE (8304X) Sent   wp=00000001  lp=0012FBEC Validate (512,384)-(512,384)  Old (-32000,-32000)-(-31840,-31969)  OldClient (-32000,-32000)-(-32000,-32000)
000036:00010168 "intercom"  WM_NCPAINT (8504X) Sent   wp=00000001  lp=00000000  wp=00000001!
000037:00010168 "intercom"  WM_WINDOWPOSCHANGED (4704X) Sent   wp=00000000  lp=0012FC18  (512,384)-(512,384)    NoZOrder,  FrameChanged,  ShowWindow,  NoCopybits  Z-Order Unchanged
000038:00010168 "intercom"  WM_MOVE (304X) Sent   wp=00000000  lp=019D0203  (515,413)
000039:00010168 "intercom"  WM_SIZE (504X) Sent   wp=00000000  lp=00000000  Restored  (0,0)
000040:00010168 "intercom"  WM_SETFOCUS (704X) Sent   wp=00000000  lp=00000000  Focus from hwnd 00000000
000041:00010168 "intercom"  WM_ACTIVATE (604X) Sent   wp=00000001  lp=00000000  Activate from hwnd 00000000
000042:00010168 "intercom"  WM_WINDOWPOSCHANGING (4604X) Sent   wp=00000000  lp=0012FC14  (0,0)-(0,0)    Z-Order Top
000043:00010168 "intercom"  WM_NCACTIVATE (8604X) Sent   wp=00000000  lp=00010170  Deactivate to hwnd 00010170
000044:00010168 "intercom"  WM_ACTIVATE (604X) Sent   wp=00000000  lp=00010170  Deactivate to hwnd 00010170
000045:00010168 "intercom"  WM_WINDOWPOSCHANGING (4604X) Sent   wp=00000000  lp=0012FC2C  (0,0)-(0,0)    Z-Order Top
000046:00010168 "intercom"  WM_KILLFOCUS (804X) Sent   wp=00010178  lp=00000000  Focus to hwnd 00010178
000047:00010168 "intercom"  WM_WINDOWPOSCHANGING (4604X) Sent   wp=00000000  lp=0012F888  (0,0)-(0,0)    Z-Order Top
000048:00010168 "intercom"  WM_WINDOWPOSCHANGING (4604X) Sent   wp=00000000  lp=0012FC0C  (0,0)-(0,0)    Z-Order Top
000049:00010168 "intercom"  WM_USER+0xAC00 (b00004X) Dispatched   wp=00000000  lp=00000000
000050:00010168 "intercom"  WM_USER+0xAC1A (b01a04X) Dispatched   wp=00000000  lp=00000000
000051:00010168 "intercom"  WM_GETICON (7f04X) Sent   wp=00000002  lp=00000000
000052:00010168 "intercom"  WM_GETICON (7f04X) Sent   wp=00000000  lp=00000000
000053:00010168 "intercom"  WM_GETICON (7f04X) Sent   wp=00000001  lp=00000000
000054:00010168 "intercom"  WM_USER+0xAC3F (b03f04X) Sent   wp=00000000  lp=00B21670
000055:00010168 "intercom"  WM_USER+0xAC40 (b04004X) Sent   wp=00000000  lp=00B21670
000056:00010168 "intercom"  WM_USER+0xAC3F (b03f04X) Sent   wp=00000000  lp=00B21670
000057:00010168 "intercom"  WM_USER+0xAC40 (b04004X) Sent   wp=00000000  lp=00B21670
000058:00010168 "intercom"  WM_ACTIVATEAPP (1c04X) Sent   wp=00000000  lp=000007F0  Deactivate to  task 000007F0
000059:00010168 "intercom"  WM_USER+0xAC01 (b00104X) Dispatched   wp=00000000  lp=00000000

Вот как прогу видит FAR:
Модуль:                intercom.exe
Полный путь:           C:\Program Files\Intercom\intercom.exe
Версия файла:          8.0.6.67
Описание:              Intercom 8.0
PID:                   1556
Parent PID:            1372  (Explorer.EXE)
Приоритет:             8
Нитей:                 14
...
Окно:                  intercom <- Текст окна
HWND:                  000F041A
...

Вот код:
wnd:=FindWindow(PChar("TApplication"),PChar("intercom"));
If wnd=0 Then Application.MessageBox("Intercom НЕ запущен!","test",0);
ShowWindow(wnd,sw_Normal);
SendMessage(wnd,WM_ACTIVATEAPP,0,0);
SendMessage(wnd,WM_SHOWWINDOW,0,SW_PARENTOPENING);
SendMessage(wnd,WM_USER+$AC3F,0,$00B21670);
SendMessage(wnd,WM_USER+$AC40,0,$00B21670);
SendMessage(wnd,WM_USER+$AC01,0,0);


Класс TApplication подсмотрен через WinSight


 
Palladin ©   (2006-06-30 16:42) [1]

попробуй

ShowWindow(Application.Handle,SW_SHOW);
Application.Restore;
Application.BringToFront;


 
IceBeerg ©   (2006-06-30 16:48) [2]

2 Palladin ©   (30.06.06 16:42) [1]

Нет, это для своей программы, а мне нужно вытащить из из трея чужую

Сейчас залю и дам линк на эту программу


 
IceBeerg ©   (2006-06-30 16:53) [3]

Вот линк на программу www.icebeerg.newmail.ru/intercom.zip


 
Шпиён   (2006-06-30 19:43) [4]

У меня (для своей программы, следовательно, известны WM_USER+XXX и то, что нужен двойной щелчок левой кнопкой мышки) получилось -
достаточно было послать главному окну программы WM_USER+XXX c WM_LBUTTONDBLCLK в lParam.

SendMessage(hWnd,WM_USER+100,0,$203);

Попробуй:
1) выяснить, как "вручную" развернуть программу из трея (правая кнопка? левая кнопка? двойной щелчок? еще что-то???)
2) подсмотреть сообщения WM_USER+XXX  во время ручной активации (тут поможет содержимое lParam - ищи соответствующее твоему действию)
3) найти в логе нужное сообщение WM_USER и определить этот самый "ХХХ"

ps Cам попробовать на твоей программе не могу - на работе.


 
Шпиён   (2006-06-30 20:03) [5]

Для твоего приложения совет может и не помочь, если в RxLib нотификация организована по другому.
Сам RxLib не использую.


 
Шпиён   (2006-06-30 20:34) [6]

Нашел у себя приложение, использующее RxTrayIcon (чужое), разворачивается из трея по WM_LBUTTONDBLCLK.
Отследил SPY++.
сообщение WM_USER+44116 ($AC54), wParam=0, lParam=$203.
Чтобы это увидеть, пришлось ставить в SPY++ "галку" All Windows of same thread - сообщение отсылается "окну" с классом TPUtilWindow (!) - следствие - возможны проблемы с его поиском - такого рода "окон" может быть несколько.


 
Virgo_Style ©   (2006-07-01 09:03) [7]

IceBeerg ©   (30.06.06 16:48) [2]

Не совсем понял, надо вытащить из трея совсем чужую или другую свою программу?


 
Пусик ©   (2006-07-01 18:05) [8]

procedure RestoreIntercom;
var
 hWnd: THandle;
szClassName: array[0..MAX_PATH] of Char;
 szFilePath: array[0..MAX_PATH] of Char;
 hProcess,dwID: THandle;
begin
hWnd := GetWindow(GetDesktopWindow, GW_CHILD);
repeat
   GetWindowThreadProcessId(hWnd,dwId);
   hProcess := OpenProcess(PROCESS_ALL_ACCESS, True, dwID);
   GetModuleFileNameEx(hProcess,0, szFilePath, MAX_PATH);
   CloseHandle (hProcess);
 GetClassName(hWnd, szClassName, MAX_PATH);
 if (ExtractFileName(szFilePath)="intercom.exe") and (szClassName="TPUtilWindow")
     then SendMessage(hWnd,WM_USER+44116,0,$203);
 hWnd := GetNextWindow(hWnd,GW_HWNDNEXT);
until hWnd=0;
end;


 
IceBeerg ©   (2006-07-03 10:09) [9]


> Не совсем понял, надо вытащить из трея совсем чужую или
> другую свою программу?

Совсем чужую.


> 2 Virgo_Style ©   (01.07.06 09:03) [7]
> Пусик ©   (01.07.06 18:05) [8]

Спасибо выручили!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.047 c
2-1153565838
Andrey Kad.
2006-07-22 14:57
2006.08.13
Диалог для указания директории для сохранения в нее файлов.


15-1152870960
ChainikDenis
2006-07-14 13:56
2006.08.13
Работа для програмиста в Москве


3-1149503412
stud
2006-06-05 14:30
2006.08.13
формирование отчета в квикрепорт


15-1152707829
harisma
2006-07-12 16:37
2006.08.13
Вордовский файл.


15-1153239518
Kerk
2006-07-18 20:18
2006.08.13
Неофициальный news-сервер FIDO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский