Форум: "WinAPI";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизХэндл главного окна запущенного мною приложения Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c