Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.51/35: Рейтинг темы: голосов - 35, средняя оценка - 4.51
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171

Как отследить события чужого окна?

06.04.2021, 19:22. Показов 8573. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Помогите, пожалуйста в решении следующей задачи...
Есть окно цель которого "следить" за неким участком экрана, а точнее за тем, что происходит под ним.. .
Допустим, что окно следит за Paint-ом, браузером или word-ом и пользователь двигает(или скролит) этот самый Paint, word или браузер.
Окно должно двигаться вслед за действиями пользователя.
Т.е. окно должно как бы приклеится к "отслеживаемой поверхности".
Сделать это можно двумя способами:
Первый, отслеживать и анализировать графические изменения на экране.
Теоретически есть и второй способ.... (вероятно, более простой, если знать как это делать)
Определить hWnd отслеживаемого окна(находящегося под следящим окном) и отслеживать его события.
Если, не трудно подскажите, пожалуйста как это делается, а точнее...
Как получить hWnd окна находящегося под следящим окном?
И как отследить события окна по hWnd?
Заранее, Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.04.2021, 19:22
Ответы с готовыми решениями:

Как добавить свою кнопку в title-bar ЧУЖОГО окна?
Как добавить свою кнопку в title-bar ЧУЖОГО окна? Насколько я понял, полазив по Сети, это непростая задача. Есть примеры добавления...

Как зная дескриптор чужого окна сделать его неактивным?
Подскажите пожалуйста, как зная дескриптор чужого окна сделать его неактивным (невосприимчивым к левым и правым кликам мыши и нажатием...

Как отследить разфокуксировку окна
Помогите плиз!!! Как отследить когда Мое окно потеряет фокус, т.е. пользователь перейдет на др приложение!

53
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
18.04.2021, 21:51  [ТС]
Студворк — интернет-сервис помощи студентам
Вот, еще что интересно: у GetCursorPos_ параметром служит указатель на структуру POINT, которая получает экранные координаты курсора. Но...... указатель на структуру Р это @p, следовательно, строка должна выглядеть вот так:
Цитата Сообщение от nigri_lupus Посмотреть сообщение
GetCursorPos_(@p)
Это если верить тому, что я читал: http://www.vsokovikov.narod.ru... sorpos.htm
Тем не менее, она работает и так:
Цитата Сообщение от Pro_grammer Посмотреть сообщение
GetCursorPos_(@p)
и так
Цитата Сообщение от Pro_grammer Посмотреть сообщение
GetCursorPos_(p)
Что это за нафиг с формой записи??? Ведь указатель на структуру это указатель на структуру, а не сама структура, но GetCursorPos_ её спокойно принимает в любой из этих форм записи. При этом WindowFromPoint_-у
Цитата Сообщение от nigri_lupus Посмотреть сообщение
p\x|p\y<<32
подавай.

Добавлено через 14 минут
Pro_grammer, Кстати, после экспериментов выяснилось, что WindowFromPoint видит hwnd невидимого глазом пользователя "дырявого" окна. Т.е. Видит не окно под "дыркой", которое видно пользователю, а окно содержащее дырку. Так, что его хоть на миг, но придется убрать с экрана, как это делают скришоторы, п жаль.... Хотелось этого избежать из эстетических соображений.
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
18.04.2021, 22:06
Цитата Сообщение от nigri_lupus Посмотреть сообщение
Что это за нафиг с формой записи?
Убедись, что это одинаково:
Debug p
Debug @p
По логике у структуры и должен возвращается её адрес, а что же ещё?
А так возвращается значение переменных
Debug p\x
Debug p\y

Добавлено через 12 минут
Цитата Сообщение от nigri_lupus Посмотреть сообщение
Т.е. Видит не окно под "дыркой", которое видно пользователю, а окно содержащее дырку.
Метод дырки как CreateRectRgn?
У меня ваш эксперимент не подтвердился. При клике на "дырке" выдает HWND именно окна под дыркой.
0
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
18.04.2021, 22:15  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Метод дырки как CreateRectRgn?
У меня ваш эксперимент не подтвердился. При клике на "дырке" выдает HWND именно окна под дыркой.
Нет.
Я Выложил своё окно сюда: Назначение цвета прозрачным
0
1 / 1 / 0
Регистрация: 28.07.2018
Сообщений: 124
13.11.2021, 08:51
Пытаюсь использовать API функцию GetWindow_() с параметром GW_HWNDNEXT, которая, по идее, должна возвращать хендл окна, которое находится ПОД активным окном, но она почему-то возвращает хендл какого-то другого окна. В чём проблема не могу понять.
Ссылка на описание функции

Вот простой код:
PureBasic
1
2
3
4
5
6
7
8
hwnd = OpenWindow(1, 100, 100, 130, 10, "ОКНО")
Repeat
  Event = WindowEvent()
  If a = 0
    Debug GetWindow_(hwnd, #GW_HWNDNEXT)
    a = 1
  EndIf
Until Event = #PB_Event_CloseWindow
Есть ещё функция GetNextWindow_() , но она в пурике не работает.
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.11.2021, 12:16
Цитата Сообщение от antro735 Посмотреть сообщение
по идее, должна возвращать хендл окна, которое находится ПОД активным окном
Не факт.
Найденный дескриптор идентифицирует окно ниже определяемого окна в Z - последовательности.
Ваше окно может быть вообще в другом углу экрана.
0
1 / 1 / 0
Регистрация: 28.07.2018
Сообщений: 124
13.11.2021, 12:36
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Найденный дескриптор идентифицирует окно ниже определяемого окна в Z - последовательности.
Но ведь в параметрах функции в качестве определяемого окна указано только что созданное нами окно. Ведь если дебагнуть hwnd, то дескриптор созданного нами окна определяется правильно.
Может быть я неправильно понимаю Z - последовательность ?
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.11.2021, 13:40
Цитата Сообщение от antro735 Посмотреть сообщение
в качестве определяемого окна указано только что созданное нами окно.
Так то оно так. Но другим то окнам что от этого, ваше окно не меняет Z последовательность
Запустите подряд 5 калькуляторов. Повозите над ними своё окно. Чувствуете, что окон много, а нижнее в Z - последовательности только одно?
0
1 / 1 / 0
Регистрация: 28.07.2018
Сообщений: 124
13.11.2021, 13:45
А как же тогда мне правильно узнать дескриптор окна, находящийся под созданным нами окном ?
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.11.2021, 15:58
А для чего нужно создавать своё окно поверх чужого? Ведь чужое не видно будет!
В теме уже есть простой способ:
Функция WindowFromPoint извлекает дескриптор окна, которое содержит заданную точку.
0
1 / 1 / 0
Регистрация: 28.07.2018
Сообщений: 124
13.11.2021, 16:15
Верхнее окно можно растягивать и уменьшать, выбирая тем самым область для скриншотов окна, которое находится под ним. То есть, Выбрали область при помощи верхнего окна, закрыли верхнее окно, и потом скриншотим эту область в окне, находящимся под ним. Хендл нужен, чтоб скриншотить это окно даже если оно перекрыто другими окнами.
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.11.2021, 17:06
Цитата Сообщение от antro735 Посмотреть сообщение
Выбрали область при помощи верхнего окна,
Ну и нормально. В это время можно при помощи WindowFromPoint добыть дескриптор окна.
0
1 / 1 / 0
Регистрация: 28.07.2018
Сообщений: 124
13.11.2021, 17:36
Сейчас попробую.... )))

Добавлено через 18 минут
Эх, у меня-самоучки ещё мало опыта.... Не могу разобраться как работать со структурами. В частности, как правильно здесь применить структуру POINT
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.11.2021, 18:40
Цитата Сообщение от antro735 Посмотреть сообщение
как правильно здесь применить структуру POINT
Было же выше:
Как отследить события чужого окна?
1
1 / 1 / 0
Регистрация: 28.07.2018
Сообщений: 124
13.11.2021, 19:48
Благодарю, Pro_grammer !!! Сейчас буду пробовать !

Добавлено через 9 минут
Всё сработало !!! Ещё раз огромное спасибо за помощь !!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2021, 19:48

Как отследить нажатие кнопки вне окна?
Нужно отслеживать нажатие кнопки вне формы(отслеживать надо сразу после запуска приложения) и при каждом нажатии просто издавать звук.

Как отследить открытие нового окна в outlook?
Mne bi pri poyavlenii novogo okna tuda svoe menu zapihivat'. Spasibo. P.S. Nachalnik nastoyatelno rekomendoval ;(

Как изменить размер чужого окна?
Нужно создать панель управления размера окна определенного приложения. И еще полноэкранный режим. Можно ли это сделать программно? ...

Как отследить события на USB?
Здравствуйте. Есть подозрение, что какой-то драйвер или программа перехватывает USB порты на короткое время, в связи с чем рвется...

Как предотвратиь появление определенного чужого окна
Написал прогу, которая постоянно перебирает все окна и закрывает, если у окна определенный заголовок #include &lt;windows.h&gt; BOOL...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
54
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru