Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » События от мыши в окне чужой программы

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

iva2185

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть некая онлайновая игра, в окне которой (Окно 1) требуется определять координаты курсора мыши для потребностей команды игроков.
В Окне 1 надо двигать мышь затем, чтобы в шапке окна рядом с заголовком выводились координаты курсора мыши относительно этого Окна 1.
Хендл Окна 1 определен, в процедуре FormMouseMove передали фокус на чужое окно (SetForeGroundWindow).  
Сразу стало понятно, что, хотя фокус - на  Окне 1 и выводятся координаты в его шапку, координаты мыши считываются только из пределов открытого родного окна (Окно 2), и определяются относительно экрана, а не относительно Окна 1.
Помогите построить считывание координат мыши в Окне 1.
Спасибо.
 

Всего записей: 3 | Зарегистр. 11-12-2014 | Отправлено: 11:08 14-12-2015
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Язык-то хоть какой ? Или всё равно ?
 
Ну и из общих соображений...
Когда мышь двигается не над вашим окном 2, а над окном чужого приложения, Windows от чего-то считает, что это дело чужого приложения, а не ваше, и события шлёт только ему.  
Чтобы тоже быть в курсе происходящего там, вам нужно создать отдельную dll, при запуске зарегистрировать её как хук на события мыши, при выходе аккуратно убраться за собой. Быть готовым к вою всяких параноидальных антивирусов, потому что вы запускаете, по сути, программу-шпион...
 
Вы точно хотите этим заняться ?

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 12:53 14-12-2015
iva2185

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Язык-то хоть какой ? Или всё равно ?  

Делфи 6.
Созданием dll мне приходилось заниматься, - не очень понятно было, что так глубоко придется залезать.
Хочу заняться...
Спасибо за консультацию...  

Всего записей: 3 | Зарегистр. 11-12-2014 | Отправлено: 14:48 14-12-2015
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
План примерно такой:
 
Создаём DLL, в которой заводим функции для запуска и остановки хука, ну и саму функцию хука.
 
Регистрируем свой хук при помощи setwindowshookex(
Убираем через unhookwindowshookex(
 
В функции хука отправляем себе перехваченное событие мыши через postmessage
Не забываем сделать callnexthookex(  
 
В своём приложении грузим dll,
вызываем старт хука, начинаем принимать и обрабатывать отловленные события от мыши.
По выходу - убираем свой хук.
 
На словах - всё  
Форматы вызовов функций есть в MSDN
 
Если код будет написан и не заработает, обращайся...
Delphi 6 не обещаю, а под более поздними, могу попробовать поискать, что пошло не так.
 
 
 
 

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 15:56 14-12-2015
iva2185

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Весьма признателен, глубокоуважаемый KDPoid !  
Надеюсь отчитаться об успехе...
 
Дай Бог тебе исполнить твои желания!

Всего записей: 3 | Зарегистр. 11-12-2014 | Отправлено: 17:41 14-12-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » События от мыши в окне чужой программы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru