|
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
|
|
Как узнать состояние CheckBox в чужом окне21.09.2014, 12:47. Показов 4208. Ответов 38
Метки нет (Все метки)
0
|
|
| 21.09.2014, 12:47 | |
|
Ответы с готовыми решениями:
38
Как изменить состояние многих CheckBox на форме в один прием Символ под курсором в чужом окне Как узнать состояние привода CD-ROM |
|
bite
5011 / 4841 / 852
Регистрация: 13.04.2015
Сообщений: 10,122
|
|
| 11.01.2022, 16:35 | |
|
0
|
|
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
|
| 11.01.2022, 20:49 | |
|
Send- и PostMessage не хотят корректно работать с такими хитропопыми объектами. А вышеприведенный код не хочет работать на 64-битной Винде. По крайней мере, пока его не допилят до нужной кондиции. Короче, засада
0
|
|
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
|
| 11.01.2022, 21:24 | |
|
сорри, завтра днем отвечу. У меня и код, и программа, в которой пытаюсь узнать состояние чекбокса - всё на работе.
Смещения, точно помню, поправил. Но сдается мне, дело в процедуре AccessibleObjectFromWindow. Возвращаемый ею IAccessible - какой-то неопределенный. Я не знаю чему он должен быть равен. Запускал и вашу утилитку - на Win10 64 она всегда uncheсked показывает. Хотя имя класса определяет правильно. Где копать - хз, причин может быть много. Начиная с правильности строковой константы IID_IAccessible, и заканчивая правильной декларацией перечисленных dll-функций. Читал, что могут повлиять и права доступа
0
|
|
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
||||||
| 13.01.2022, 10:22 | ||||||
|
The trick, добрый день!
Смещения исправил, вызываю функцию так:
после вызова значения равны вот чему: (см. картинку)
0
|
||||||
|
Модератор
|
|||||||
| 13.01.2022, 13:32 | |||||||
1
|
|||||||
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
|
| 13.01.2022, 15:05 | |
|
The trick, спасибо за помощь. Если не трудно, перекомпилируйте, пожалуйста, в exe-файл предыдущую утилитку, но теперь уже с этим 64битным кодом. Просто, чтобы убедиться, что код действительно работает. У меня здесь нет компилятора, код запускаю из под VBA. А тут даже типа OLE_HANDLE нет. Так-то понятно, что это указатель
0
|
|
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
|
| 13.01.2022, 15:42 | |
|
The trick, блин, точно. VB6 не поддерживает 64-битники, а выше уже всякие VB.Net-ы и студии. Понял, спасибо
0
|
|
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
|
| 14.01.2022, 11:52 | |
|
The trick, день добрый!
К сожалению, ваш код содержит несколько ошибок и не работает. в строке IIDFromString Lib "ole32" (ByRef lpsz As Any наверное, лучше поставить IIDFromString Lib "ole32" (ByVal lpsz As Any раз уж передается адрес строки. DispCallFunc Lib "oleaut32" (ByVal PPV As IUnknown, ByVal oVft As LongPtr, ByVal cc As Long, ByVal rtTYP As Long, ByVal paCNT As Long, ByVal paTypes As Any, ByVal paValues As Any, ByRef fuReturn As Variant) As Long здесь шестым параметром идет ByVal paTypes As Any, но VBA ругается на несоответствие типов, когда функции передается параметр types(0), равный Integer. Если заменить ByVal paTypes As Integer, то VBA вылетает. Решением является замена ByVal paTypes As Any, ByVal paValues As Any на ByRef в обоих параметрах, раз уж передаются адреса массивов. Но в конечном итоге код все равно возвращает неправильное значение.
0
|
|
|
Модератор
|
||||
| 14.01.2022, 12:14 | ||||
|
0
|
||||
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
||||||
| 14.01.2022, 13:32 | ||||||
|
еще раз полностью скопировал ваш код в отдельный модуль, пришлось, правда, везде исправить OLE_HANDLE на LongPtr (надеюсь, не в этом причина неудачи), все остальные декларации прошли. Через Spy++ получил хендл нужного отмеченного чекбокса, запустил код и все равно выдало False
![]()
0
|
||||||
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
|
| 14.01.2022, 14:47 | |
|
The trick, DispCallFunc возвращает ноль
IAccessibleGet_accState становится равным 1048576
0
|
|
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
|
| 14.01.2022, 15:18 | |
|
о, это радует. Хоть более-менее работает. Если бы еще как-то состояние получить "отмечен/не отмечен"
0
|
|
|
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
|
|
| 19.01.2022, 21:50 | |
|
The trick, добрый вечер!
Блуждая по разным древним форумам наткнулся на такой момент - один товарищ пишет, что код с использованием некоторых API-шных функций начинал корректно работать только, если запущен был в модуле формы. В стандартных модулях возвращалось 0. Не сталкивались с такой ситуацией? Добавлено через 36 минут в общем, это, действительно, так. Перенес код в модуль формы, и сразу заработало. Правда, возвращается &h100001 для отмеченного и &h100000 для неотмеченного, но это уже мелочи. Главное, что их теперь можно различать
0
|
|
|
Модератор
|
|
| 19.01.2022, 22:11 | |
|
_shark, ты что-то не то делаешь просто. Разницы нет.
0
|
|
| 19.01.2022, 22:11 | |
|
Как при помощи VB можно узнать состояние соединения в данный момент? Узнать текст ToolTip-a контрола в чужом приложении ? Как узнать позицию курсора в текстовом окне? Как узнать текущее положение курсора в текстовом окне ??? Как узнать, что в другом окне кликнул юзер? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|