|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Установить хук на координаты мышки
Хэй народ!!!Мне нужно написать прогу с dll-кой. В dll - ке хук на отлов мыши. Мне нужно чтобы при запуске Блокнота он устанавливался.Каа это сделать?Процедура типа if FindWindow(...) <>0 не помогает.И ещё, хук должен срабатывать при наведении на окно блокнота в определённом месте размером 100-300 пикс.Как это сделать?
|
#2
|
||||
|
||||
может я тебя неправильно понял
------------------ заставить курсор мыши перейти на координаты x400 y300 SetCursorPos(400,300); -------------------- -------------------- УЗНАЕТ КООРДИНАТЫ КУРСОРА ДАЖЕ ЕСЛИ ОН НЕ НАХОДИТСЯ В ЗОНЕ ПРОГРАММЫ, ТОИСТЬ (ЭТА КОММАНДА УЗНАЕТ КООРДИНАТЫ МЫШИ ДАЖЕ ЕСЛИ ФОРМА НЕ АКТИВНА (СВЕРНУТА)) var point: Tpoint; begin GetCursorPos(point); button1.Top:=point.y; button1.Left:=point.x; end; -------------------- (И МОЖЕТ ЭТО ТЕБЕ ПРИГОДИТСЯ ) -------------------- НАЖАТЬ НА ЛЕВУЮ КНОПКУ МЫШКИ Mouse_event(MOUSEEVENTF_LEFTDOWN, mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0);Mouse_event(MOUSEEVENTF_LEFTUP, mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0); --------------------- --------------------- НАЖАТЬ НА ПРАВУЮ КНОПКУ МЫШКИ Mouse_event(MOUSEEVENTF_RIGHTDOWN, mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0);Mouse_event(MOUSEEVENTF_RIGHTUP, mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0); --------------------- --------------------- НАЖАТЬ НА КОЛЕСИКО МЫШКИ Mouse_event(MOUSEEVENTF_MIDDLEDOWN, mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0);Mouse_event(MOUSEEVENTF_MIDDLEUP, mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0); --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
#3
|
||||
|
||||
Цитата:
|
#4
|
|||
|
|||
Я наверное просто плохо обяснил. Хук я уже написал, он на запрет нажатия левой кнопки мыши. Так вот, он должен устанавливаться при запуске блокнота. Сделать это никак не могу.
А в блокноте в определенной области срабатывать, то есть в квадрате 100-300 пикс не должен давать мышке нажиматься. Вот. |
#5
|
|||
|
|||
Так интересно отвечать на вопрос, не зная зачем это вообще такое нужно! ^_^
Могу предложить следующее. При попадании мышкиного курсора в заданную прямоугольную область, в callback-функции, адрес которой вы передавали во втором параметре SetWindowsHookEx, вытаскивайте дескриптор окна под курсором (с помощью функции WindowFromPoint). Получив дескриптор, считывайте класс окна (функция GetClassName) и сравнивайте его с классом окна Блокнота, т.е. с 'EDIT'. Если оказывается, что под курсором находится окно этого класса, то следующий шаг — определить имя исполняемого файла, которому принадлежит найденное окно. Это можно сделать так. Ну и наконец, если имя файла совпадает с именем файла Блокнота, то тогда делайте запрет на клик. |