Вниз
Скачать: CL | DM;

Хэндл главного окна запущенного мною приложения   Найти похожие ветки 

 
Pasha L ©   (2005-08-16 17:59) [0]

Здравствуйте. Совсем с недавних времен работаю с winapi, так что мой вопрос может показаться вам глупым. Ладно. Я запускаю приложение с помощью shellexecute. Как мне узнать хэндл главного окна запущенного мною приложения?


 
Leonid Troyanovsky ©   (2005-08-16 21:27) [1]


> Pasha L ©   (16.08.05 17:59)  

> запускаю приложение с помощью shellexecute. Как мне узнать
> хэндл главного окна запущенного мною приложения?


Главное окно - понятие неопределенное.
Т.е., в зависимости от .. главное окно м.б. найдено,
например, FindWindow*, скажем, после WaitForInputIdle.

--
Regards, LVT.


 
Pasha L ©   (2005-08-16 22:56) [2]

А если в приложении только одно окно? то есть есть Application (я где то слышал, что это тоже окно, только невидимое) и Form1. Вот я хочу найти Form1.


 
alpet ©   (2005-08-16 23:50) [3]

Pasha L ©   (16.08.05 22:56) [2]

А в чем проблема то? Если известен заголовок и/или класс окна - попытай удачи с помощью FindWindow.


 
Leonid Troyanovsky ©   (2005-08-17 09:41) [4]


> Pasha L ©   (16.08.05 22:56) [2]
> А если в приложении только одно окно? то есть есть Application
> (я где то слышал, что это тоже окно, только невидимое) и
> Form1. Вот я хочу найти Form1.


Если оба приложения твоих, то проще всего сделать так:
запускающее приложение передает в комстроке хендл своего
окна, которое будет ожидать ответное сообщение, например,
WM_USER (обработчик WMUser(var msg: TMessage); message WM_USER)

Запускаемое приложение в OnCreate своей главной формы
читает параметр и отправляет
SendMessage(AppHandle, WM_USER, Application.Handle, Handle)

Если запускаемое приложение чужое, то запускать лучше
CreateProcess, чтобы получить хендл процесса для
WaitForInputIdle, а затем использовать EnumWindows для
выделения окон, принадлежащих запущенному процессу с
помощью GetWindowThreadProcessId.

Если известно, что запускаемый процесс однопоточный, то
искать можно EnumThreadWindows.

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

--
Regards, LVT.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
2-1126707473
Anton22
2005-09-14 18:17
2005.10.16
StatusBar


3-1125579072
Андрей Жук
2005-09-01 16:51
2005.10.16
Индексы по выражениям в Firebird


14-1127335610
WonderfulDay!
2005-09-22 00:46
2005.10.16
WinXP и BIOS


14-1127370348
leonidus
2005-09-22 10:25
2005.10.16
Ссылки на уроки по администрированию Win2000/2003 Server


14-1127828846
pazitron_brain
2005-09-27 17:47
2005.10.16
Как стать модератором?




   Наверх