Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.056 c
2-1125918658
Андрей гость
2005-09-05 15:10
2005.10.16
что такое alias


1-1127326492
Чайник
2005-09-21 22:14
2005.10.16
Проблема с отображением форм из DLL


1-1127727660
Sergey_R
2005-09-26 13:41
2005.10.16
StringGrid и иконки


2-1126619915
SMATMP
2005-09-13 17:58
2005.10.16
Bitmap color attributes


3-1125544025
Ярослав
2005-09-01 07:07
2005.10.16
Определить изменилась ли запись в триггере?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский