Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

Идентификация окон   Найти похожие ветки 

 
HardTouch   (2005-08-18 12:32) [0]

Может кто подскажет как можно отличить одно окно от другого в чужом приложении, причем класс окон одинаковый, а заголовков окон нет. Например, инструментальные окна Adobe Photoshop и т.п.


 
Digitman ©   (2005-08-18 12:44) [1]

если тобой не определены иные атрибуты (признаки) для однозначной идентификации окна, то - никак.


 
n0name   (2005-08-18 12:56) [2]

EnumChildWindows
Порядок перечисления будет одинаков для каждого запуска.


 
Digitman ©   (2005-08-18 13:33) [3]


> n0name   (18.08.05 12:56) [2]


это НЕ имеет к задаче автора ни малейшего отношения.


 
Leonid Troyanovsky ©   (2005-08-18 13:35) [4]


> Digitman ©   (18.08.05 13:33) [3]

> > n0name   (18.08.05 12:56) [2]

> это НЕ имеет к задаче автора ни малейшего отношения.


Иметь-то имеет, но не дает гарантий.

--
Regards, LVT.


 
Digitman ©   (2005-08-18 13:49) [5]


> Leonid Troyanovsky ©   (18.08.05 13:35) [4]


ну и нахрена ему хэндлы эти сдались ?

задача-то у него  - получить КОНКРЕТНЫЙ хендл некоего НУЖНОГО ему окна, а не огульный список хэндлов всех подряд доч.окон !


 
Leonid Troyanovsky ©   (2005-08-18 13:53) [6]


> Digitman ©   (18.08.05 13:49) [5]

> ну и нахрена ему хэндлы эти сдались ?


Если он n по порядку (z-order) у парента,
то так и найдет.
Только, оный порядок не гарантирован.

--
Regards, LVT.


 
Digitman ©   (2005-08-18 14:01) [7]


> Leonid Troyanovsky ©   (18.08.05 13:53) [6]


> оный порядок не гарантирован


вот именно !

и МАССА чего еще не гарантировано)

производитель ПО не обязан придерживаться каких-либо соглашений с каким-то HardTouch, производитель имеет полное право в любой секунд изменить все что угодно (в т.ч. и этот "порядок"), в рез-те чего софт автора в мгновение ока становится в известную позу.


 
Leonid Troyanovsky ©   (2005-08-18 14:16) [8]


> Digitman ©   (18.08.05 14:01) [7]

> > оный порядок не гарантирован

> вот именно !

> и МАССА чего еще не гарантировано)


Ну, а HardTouch чем провинился-то?
Ты, брат, впал в полемический раж ;)

--
Regards, LVT.


 
Digitman ©   (2005-08-18 14:47) [9]


> Leonid Troyanovsky ©   (18.08.05 14:16) [8]


> HardTouch чем провинился-то


тем что не определил исх.условия для решения задачи.

признак того что некое одно окно (из множества подобных по классу) имеет, к примеру, некий дочерний edit-контрол, а другое (того же класса) оного не имеет,  УЖЕ есть признак, по которому можно неким образом идентифицировать окно !


> Ты, брат, впал в полемический раж


про твое "не дает гарантий" я ж не комментирую ?)

"понятно что лошадь" - только детальное исследование отличий одного от другого окон заданного класса в этом случае приведет к построению конечного алгортитма !

)


 
HardTouch   (2005-08-18 14:57) [10]

Да, ну и палемика тут разгорелась! :-))) И всему виной я...
Вобщем дело вот в чем. Я уже пытался использовать EnumChildWindows, но ни к чему хорошему это не привело, рассмотрим на примере Photoshop. Можно создать много окон самому путем перетаскивания закладок инструментальных окон на рабочую область. Сами понимаете про что я...не выход это.


 
HardTouch   (2005-08-18 15:03) [11]

Есть еще одна зацепка, но как ей воспользоваться!? Как-то заметил я в утиле SPY++, что у каждого окна в свойствах есть некое постоянное значение, названное там, "window bytes",кажется. Но как его получает SPY++? В смысле как его получить мне!? :-) Может на эту тему у кого есть соображения.


 
Leonid Troyanovsky ©   (2005-08-18 15:19) [12]


> HardTouch   (18.08.05 15:03) [11]
> Есть еще одна зацепка, но как ей воспользоваться!? Как-то
> заметил я в утиле SPY++, что у каждого окна в свойствах
> есть некое постоянное значение, названное там, "window bytes",кажется.
> Но как его получает SPY++? В смысле как его получить мне!?
> :-) Может на эту тему у кого есть соображения.


Некоторым контролам присваивается идентификатор,
прочитать который можно GetDlgCtrlID.
Некоторые контролы пишут свою информацию в Extra Window Memory,
определяемую при регистрации класса окна.
Некоторые контролы (например, VCL) навешавают на свои окна
SetProp.

Но, все эти некоторые признаки, даже в их совокупности,
не могут однозначно идентифицировать контрол.

Т.е., для уже работающего приложения можно почти наверное
идентифицировать, но если его рестартовать - работу
придется начинать заново.

Ну и еще одно замечание. Практически все сколько-нибудь
полезные приложения предоставляют интерфейсы или что-то другое.
Т.е., управлять оными приложениями путем нажатия кнопок
извне представляется атавизмом.

--
Regards, LVT.


 
HardTouch   (2005-08-18 15:43) [13]

Мне посоветовали использовать EnumProps/GetProp или GetWindowLong, внедренный в чужой процесс. Как считаете? Просто ни про то, ни про другое не вкурсе, стоит ли рыть информацию по этой теме?


 
HardTouch   (2005-08-18 16:03) [14]


> Т.е., для уже работающего приложения можно почти наверное
> идентифицировать, но если его рестартовать - работу
> придется начинать заново.


Я готов даже с некоторой переодичностью идентифицировать. Только как?


> Ну и еще одно замечание. Практически все сколько-нибудь
> полезные приложения предоставляют интерфейсы или что-то
> другое.
> Т.е., управлять оными приложениями путем нажатия кнопок
> извне представляется атавизмом.


И как можно управлять, например, Photoshop"ом?


 
Leonid Troyanovsky ©   (2005-08-18 16:45) [15]


> HardTouch   (18.08.05 15:43) [13]
> Мне посоветовали использовать EnumProps/GetProp или GetWindowLong,
> внедренный в чужой процесс. Как считаете? Просто ни про
> то, ни про другое не вкурсе, стоит ли рыть информацию по
> этой теме?


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

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-08-18 16:51) [16]


> HardTouch   (18.08.05 16:03) [14]
>
> > Т.е., для уже работающего приложения можно почти наверное
> > идентифицировать, но если его рестартовать - работу
> > придется начинать заново.

> Я готов даже с некоторой переодичностью идентифицировать.
> Только как?


Используя всю доступную информацию, начиная от:
GetDlgCtrlID (у кнопок, пунктов менюшек оно есть),
и заканчивая z-order в паренте, а может и их координатами.
Наконец, на некоторые можно указать мышью.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-08-18 16:53) [17]


> > Т.е., управлять оными приложениями путем нажатия кнопок
> > извне представляется атавизмом.

> И как можно управлять, например, Photoshop"ом?


Даже не представляю. Поэтому и толкаю к COM.
Ну, а назачем тогда оная идентификация?

--
Regards, LVT.


 
Digitman ©   (2005-08-18 16:58) [18]


> HardTouch


на то существует Гугль.

Который всегда рад дать тебе МОРЕ инф-ции по теме "Adobe Photoshop как OLE/COM-сервер автоматизации"


 
HardTouch   (2005-08-19 10:50) [19]

Ладненько, всем спасибо за помощь. Похоже задача в общем виде неразрешима. Закину подальше :-)



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

Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.041 c
1-1127921801
userrrrr
2005-09-28 19:36
2005.10.23
как опросить клавиотуру?


1-1128055083
DrAndrey
2005-09-30 08:38
2005.10.23
Как сделать TComboBox плоским, Ctl3D:= True - не помогает?


3-1126530501
naz
2005-09-12 17:08
2005.10.23
Temporary table


14-1128183159
syte_ser78
2005-10-01 20:12
2005.10.23
12 дней не курю!


14-1128342412
oldman
2005-10-03 16:26
2005.10.23
У директора сломался факс :(





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