Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

Как получить Handle окна ?   Найти похожие ветки 

 
slaga ©   (2006-04-11 13:51) [0]

Добрый день.
Подскажите пожалуйста как мне получить Handle окна определеного приложения имея название его exe файла ?


 
Сергей М. ©   (2006-04-11 13:54) [1]


> Handle окна


Какого окна-то ?

Приложение вправе создавать и одно окно, и ни одного окна, и косой десяток окон ..


 
slaga ©   (2006-04-11 15:01) [2]

Главное окно приложения (оно точно есть, это условие)


 
Сергей М. ©   (2006-04-11 15:06) [3]

Определить, является ли некое окно приложения главным, невозможно, потому что не существует четкого критерия "главности" окна - любое верхнеуровневое окно вправе в тот или иной момент назваться "главным"


 
slaga ©   (2006-04-11 15:15) [4]

Мне нужно получить Handle окна (Формы), которому я смогу послать сообщение о закрытии.


 
Джо ©   (2006-04-11 15:17) [5]

> [4] slaga ©   (11.04.06 15:15)
> Мне нужно получить Handle окна (Формы), которому я смогу
> послать сообщение о закрытии.

Ищи, например, по классу окна.


 
slaga ©   (2006-04-11 15:20) [6]

у меня есть только название ехе файла


 
slaga ©   (2006-04-11 15:21) [7]

у меня есть только название ехе файла


 
Сергей М. ©   (2006-04-11 15:30) [8]


> у меня есть только название ехе файла


Этого не достаточно.

Тот самый твой "exe-файл" вполне может создать тучу тех самых форм, каждая из которых создаст окно, каждое из которых уникально в комбинации своих атрибутов, а именно "класс окна" + "подпись окна" + "свойство окна"


 
slaga ©   (2006-04-11 15:34) [9]

У меня еще одно условие, на одной машине может быть только один запущеный екземпляр, а получить мне надо его Application.Handle


 
Leonid Troyanovsky ©   (2006-04-11 15:41) [10]


> slaga ©   (11.04.06 15:34) [9]

> У меня еще одно условие, на одной машине может быть только
> один запущеный екземпляр, а получить мне надо его Application.
> Handle


А причем, тогда, имя файла?
Т.е., переименовать его нельзя? Или это будет отдельным вопросом?

Что-то ты не договариваешь.

--
Regards, LVT.


 
Сергей М. ©   (2006-04-11 15:44) [11]

Не получится.

Все Делфи-VCL-приложения, использующие класс TApplication и его окно в кач-ве "главного", создают это окно с классом "TApplication" и пустой подписью по умолчанию.

Т.е. сколько различных Делфи-VCL-приложений (использующих класс TApplication) работает в системе, столько и окон будет с такими атрибутами.


 
GrayFace ©   (2006-04-11 18:10) [12]

Думаю, можно примерно так:
// wnd - хендл любого окна приложния
while wnd<>0 do
begin
  wnd1:=wnd;
  wnd:=GetWindowLong(wnd, GWL_HwndParent);
end;
// wnd1 - искомый

Хотя я про HwndParent (не путать с обычным Parent"ом) мало знаю.


 
slaga ©   (2006-04-12 10:10) [13]

Я решил эту проблему по другому,
дело в том что хендл ПриложенияА нужно получить в запускаемом ПриложениемА - ПриложениеБ, соответственно я передаю Хендл ПриложенияА в ПриложениеБ через параметры запуска.



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

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
2-1151858843
МишаК
2006-07-02 20:47
2006.07.23
панель задач


2-1152008547
Dyakon_Frost
2006-07-04 14:22
2006.07.23
Вывести список файлов в директории!


2-1151858235
МишаК
2006-07-02 20:37
2006.07.23
программирование и интернет


2-1151896293
Kobik..
2006-07-03 07:11
2006.07.23
Разбивание RGB на R, G и B. Скорость.


15-1150983500
QuasiLamo
2006-06-22 17:38
2006.07.23
MS Outlook - создание правил