Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как идентифицировать окно?


Автор: sjvov 14.2.2006, 20:28
Во такая вот проблема:
Как однозначно определить(по каким либо параметрам) окно(это может быть само окно, кнопка, туллбар, меню и тд.).

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

Спасибо.

Автор: Snowy 14.2.2006, 21:17
Не меняется класс окна. Часто не меняется заголовок.
Хэндл меняется всегда.

Автор: sjvov 14.2.2006, 21:47
Класс не подходит, например кинь на форму несколько updown, у них у всех класс одинаковый, размеры, и тд... только отличаются положением на форме, а если еще форма ресайзится и контролы меняют позицию. что тогда вообще ни как?

Автор: Romikgy 15.2.2006, 09:58
sjvov, только перебором всех контролов(окон), от родительского до последнего чайлда, и выбора то что нужно

Автор: Snowy 15.2.2006, 10:19
Цитата(sjvov @ 14.2.2006, 21:47 Найти цитируемый пост)
Класс не подходит, например кинь на форму несколько updown, у них у всех класс одинаковый
Присвой контролу свое уникальное имя (в параметре Name), получишь свой уникальный клас "Tсвое_уникальное_имя".

Автор: sjvov 16.2.2006, 20:21
Спасибо, но тута не так все просто. Мне нужно запоминать не свои кнопки а чужие, а вот по каким атрибутам их запоминать я не знаю...

Romikgy, вот как мне запомнить то что нужно, вот смотри, хочу я запомнить (из примера выше) updown а их несколько лежит и у всех одинаковые параметры, как их различать? что бы после следующего перезапуска я по этим параметрам мог updown идентифицировать...

Автор: Romikgy 17.2.2006, 10:07
sjvov, имхо я бы сделал так:
1 находишь родительское окно(форму),
2 находишь дочернии окна с помощью findwindow + child точнее смотри хелп апи ф-ций , и по хенделам обращайся к нужным, почему так проканает, потому как последовательность нахождения дочерних окон будет всегда одинакова, для одно и тогоже окна smile ,
т.е. нашел 1 апдаун - это первый, нашел 13 окно(с классом апдаун) - это второй контрол необходимый тебе, и так далее....

Автор: sjvov 20.2.2006, 20:34
Спасибо большое за помощь, буду дальше думать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)