Главная страница
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.051 c
15-1150787034
Иксик
2006-06-20 11:03
2006.07.23
Российская пресса завоевывает международную аудиторию :)))


6-1142433567
Toxin
2006-03-15 17:39
2006.07.23
Поиск в локальной сети


15-1151231537
@BraIN
2006-06-25 14:32
2006.07.23
Windows Vista Product Key


3-1148235957
remlin
2006-05-21 22:25
2006.07.23
Подключение к БД MS SQL Server


4-1144749116
slaga
2006-04-11 13:51
2006.07.23
Как получить Handle окна ?