Тип элемента окна
От: st0nx  
Дата: 14.09.10 05:38
Оценка:
Возникла необходимость определить тип элемента управления(ListBox, ComboBox, Button...) чужого окна, имея его идентификатор(handle)
Пробовал определять по классу или\и по стилю. Но например некие элементы из окна MS Office Outlook:

MsoCommandBar 56000000
MsoCommandBar 46000000


Это имя класса и его стиль. В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?
winapi
Re: Тип элемента окна
От: kero Россия  
Дата: 14.09.10 05:56
Оценка:
S>В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?

Try WM_GETDLGCODE ( => DLGC_WANTARROWS etc)
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: Тип элемента окна
От: rus blood Россия  
Дата: 14.09.10 05:57
Оценка: +1
Здравствуйте, st0nx, Вы писали:

S>В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?


В общем случае — никак.
Лучше расскажи, что ты хочешь сделать.
Имею скафандр — готов путешествовать!
Re[2]: Тип элемента окна
От: kero Россия  
Дата: 14.09.10 06:09
Оценка:
K>Try WM_GETDLGCODE ( => DLGC_WANTARROWS etc)

Хотя конкретно для MsoCommandBar это не сработает.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[2]: Тип элемента окна
От: st0nx  
Дата: 14.09.10 06:13
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Здравствуйте, st0nx, Вы писали:


S>>В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?


RB>В общем случае — никак.

RB>Лучше расскажи, что ты хочешь сделать.
Мне необходимо собрать некие свойства, в том числе и что за тип, всех окон и элементов управления чужого процесса. Вот.
Re[2]: Тип элемента окна
От: st0nx  
Дата: 14.09.10 06:26
Оценка:
Здравствуйте, kero, Вы писали:

S>>В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?


K>Try WM_GETDLGCODE ( => DLGC_WANTARROWS etc)

Спасибо! Это пока лучшее из того, что есть. Но увы не все объекты можно так определить.
Re: Тип элемента окна
От: CEMb  
Дата: 14.09.10 08:05
Оценка:
Здравствуйте, st0nx, Вы писали:

S>Это имя класса и его стиль. В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?


Обработчики стандартных контролов(GetWindowLong(hWnd, GWL_WNDPROC); ) лежат в области кода библиотек User32.dll и ComCtl32.dll, если только они не перехвачены... хотя, перехваченные стандартные контролы уже как бы не совсем стандартные

Ну а самый простой способ: перебрать все названия стандатных классов и проверить, что это (GetClassName(hWnd....); ) не они.

PS. Если я правильно понял задачу...
Re[2]: Тип элемента окна
От: kero Россия  
Дата: 14.09.10 09:10
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>PS. Если я правильно понял задачу...


Наверняка — не
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: Тип элемента окна
От: kero Россия  
Дата: 14.09.10 09:17
Оценка:
Здравствуйте, st0nx, Вы писали:

S>>>В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?


K>>Try WM_GETDLGCODE ( => DLGC_WANTARROWS etc)

S>Спасибо! Это пока лучшее из того, что есть. Но увы не все объекты можно так определить.

Посмотрите еще вот этот старый топик, может — что подскажет: http://rsdn.ru/forum/winapi/1755867.all.aspx
Автор: CTpaHHoe
Дата: 06.03.06

(там RealGetWindowClass и MSAA).
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: Тип элемента окна
От: Pavel Dvorkin Россия  
Дата: 14.09.10 13:49
Оценка:
Здравствуйте, kero, Вы писали:

K>>Try WM_GETDLGCODE ( => DLGC_WANTARROWS etc)


K>Хотя конкретно для MsoCommandBar это не сработает.


Для него, может, и не сработает, но поясни. что ты хочешь тут получить ? В свое время я соорудил самописный контрол, и он отзывался на WM_GETDLGCODE, кажется, тем же DLGC_WANTARROWS. А может, и не тем. В любом случае — что ты о моем контроле ценного узнал бы, послав ему это сообщение ?
With best regards
Pavel Dvorkin
Re[4]: Тип элемента окна
От: kero Россия  
Дата: 14.09.10 14:11
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

K>>>Try WM_GETDLGCODE ( => DLGC_WANTARROWS etc)

K>>Хотя конкретно для MsoCommandBar это не сработает.

PD>Для него, может, и не сработает, но поясни. что ты хочешь тут получить ? В свое время я соорудил самописный контрол, и он отзывался на WM_GETDLGCODE, кажется, тем же DLGC_WANTARROWS. А может, и не тем. В любом случае — что ты о моем контроле ценного узнал бы, послав ему это сообщение ?


Насчет ценности чего бы то ни было — вопрос всегда спорный, но в предлагаемом тобой случае как раз все очень просто:
если PavelDvorkinСамописныйКонтрол на WM_GETDLGCODE возвращает DLGC_WANTARROWS, которое не фига не соответствует функционалу PavelDvorkinСамописныйКонтрола, — то это значит, что PavelDvorkinСамописныйКонтрол — халтура
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: Тип элемента окна
От: mr.pavel Россия  
Дата: 14.09.10 14:41
Оценка: 3 (1)
MSAA
Oleacc.h

MSDN for details


Accessible: IAccessible;
..
if Succeeded(AccessibleObjectFromWindow(AWnd, ..,..IAccessible, Accessible)) then

  Role := Accessible.get_accRole(....)


and check the Role against:

ROLE_SYSTEM_TEXT
ROLE_SYSTEM_DROPLIST
ROLE_SYSTEM_COMBOBOX
ROLE_SYSTEM_COLUMN
ROLE_SYSTEM_COLUMNHEADER
..
and so on


Здравствуйте, st0nx, Вы писали:

S>Возникла необходимость определить тип элемента управления(ListBox, ComboBox, Button...) чужого окна, имея его идентификатор(handle)

S>Пробовал определять по классу или\и по стилю. Но например некие элементы из окна MS Office Outlook:

S>
S>MsoCommandBar 56000000
S>MsoCommandBar 46000000
S>


S>Это имя класса и его стиль. В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?
Re[2]: Тип элемента окна
От: kero Россия  
Дата: 14.09.10 14:46
Оценка:
Здравствуйте, mr.pavel, Вы писали:

MP>MSAA

MP>Oleacc.h

Хехе, не вы ли по ссылке выше ?
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: Тип элемента окна
От: mr.pavel Россия  
Дата: 14.09.10 15:05
Оценка:
Думаю, да... Давно это было

Здравствуйте, kero, Вы писали:

K>Здравствуйте, mr.pavel, Вы писали:


MP>>MSAA

MP>>Oleacc.h

K>Хехе, не вы ли по ссылке выше ?
Re[5]: Тип элемента окна
От: Pavel Dvorkin Россия  
Дата: 14.09.10 15:16
Оценка:
Здравствуйте, kero, Вы писали:

PD>>Для него, может, и не сработает, но поясни. что ты хочешь тут получить ? В свое время я соорудил самописный контрол, и он отзывался на WM_GETDLGCODE, кажется, тем же DLGC_WANTARROWS. А может, и не тем. В любом случае — что ты о моем контроле ценного узнал бы, послав ему это сообщение ?


K>Насчет ценности чего бы то ни было — вопрос всегда спорный, но в предлагаемом тобой случае как раз все очень просто:

K>если PavelDvorkinСамописныйКонтрол на WM_GETDLGCODE возвращает DLGC_WANTARROWS, которое не фига не соответствует функционалу PavelDvorkinСамописныйКонтрола, — то это значит, что PavelDvorkinСамописныйКонтрол — халтура

А можно поинтересоваться, откуда ты взял, что возвращаемый WM_GETDLGCODE код для этого PavelDvorkinСамописныйКонтрол не соответствует функционалу ? Ты этот контрол видел ? Ты что-то о его функционале знаешь ?
Смею тебя заверить, что он вполне соответствовал, так как я это сообщение обрабатывал, как требовалось. Был ли там DLGC_WANTARROWS в качестве ответа или что-то иное — уже не помню, об этом я честно написал, см. выше.

Так что твое обвинение в халтуре, мягко говоря

a) ничем не обосновано
б) представляет собой попытку уйти от вопроса : "Что ты о моем контроле ценного узнал бы, послав ему это сообщение ?"

А поэтому твой ответ я могу расценивать только как попытку уйти от вопроса и заняться демагогией вместо ответа.

Не согласен — давай сюда ответ на вопрос. Без рассуждений обо мне и моем коде, который ты не видел.
With best regards
Pavel Dvorkin
Re[6]: Тип элемента окна
От: kero Россия  
Дата: 14.09.10 16:07
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:
[...]
Ни фига себе реакция на добродушную шутку, что за бред...
А в результате — желание общаться испарилось, расценивай как хочешь.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[7]: Тип элемента окна
От: Pavel Dvorkin Россия  
Дата: 14.09.10 16:28
Оценка:
Здравствуйте, kero, Вы писали:

K>Здравствуйте, Pavel Dvorkin, Вы писали:

K>[...]
K>Ни фига себе реакция на добродушную шутку, что за бред...

Вообще говоря, если обвинить собеседника в халтуре, не имея оснований к тому, а в конце поставить смайлик — шуткой это можно назвать разве что очень низкого качества.

K>А в результате — желание общаться испарилось, расценивай как хочешь.


Естественно, испарилось, коль скоро на вопрос ответить нечего
With best regards
Pavel Dvorkin
Re[8]: Тип элемента окна
От: kero Россия  
Дата: 14.09.10 16:46
Оценка:
PD>Вообще говоря, если обвинить собеседника в халтуре, не имея оснований к тому, а в конце поставить смайлик — шуткой это можно назвать разве что очень низкого качества.
K>>А в результате — желание общаться испарилось, расценивай как хочешь.
PD>Естественно, испарилось, коль скоро на вопрос ответить нечего

Мда, видно, зря я обидел kuzbas22
Автор: kero
Дата: 18.08.10
, он, выходит, правильный эпитет употребил...
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[9]: Тип элемента окна
От: Pavel Dvorkin Россия  
Дата: 14.09.10 16:54
Оценка:
Здравствуйте, kero, Вы писали:

K>Мда, видно, зря я обидел kuzbas22
Автор: kero
Дата: 18.08.10
, он, выходит, правильный эпитет употребил...


А ты поменьше в строну уходи и юмор свой демонстрируй, а вместо этого лучше просто на вопрос ответь. Он ведь по существу был (и остается), и не очень красиво всякими уловками от него уходить. А если ответить нечего — так и скажи, промахнулся, мол, с ответом. По крайней мере честнее будет...
With best regards
Pavel Dvorkin
Re[3]: Тип элемента окна
От: Pavel Dvorkin Россия  
Дата: 14.09.10 17:04
Оценка:
Здравствуйте, st0nx, Вы писали:

S>Мне необходимо собрать некие свойства, в том числе и что за тип, всех окон и элементов управления чужого процесса. Вот.


У окон есть класс, оконная функция, размеры, стили и т.д., но никакого типа нет. Сформулируй , что именно надо узнать, не употребляя слова "тип".
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.