Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.09.2009, 19:51
Aless Aless вне форума
Прохожий
 
Регистрация: 13.04.2009
Сообщения: 26
Репутация: 10
По умолчанию Установить хук на координаты мышки

Хэй народ!!!Мне нужно написать прогу с dll-кой. В dll - ке хук на отлов мыши. Мне нужно чтобы при запуске Блокнота он устанавливался.Каа это сделать?Процедура типа if FindWindow(...) <>0 не помогает.И ещё, хук должен срабатывать при наведении на окно блокнота в определённом месте размером 100-300 пикс.Как это сделать?
Ответить с цитированием
  #2  
Старый 16.09.2009, 21:34
Аватар для -sanya-
-sanya- -sanya- вне форума
Новичок
 
Регистрация: 14.04.2009
Сообщения: 64
Репутация: 20
Смущение

может я тебя неправильно понял

------------------
заставить курсор мыши перейти на координаты 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  
Старый 16.09.2009, 21:35
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,564
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Aless
Хэй народ!!!Мне нужно написать прогу с dll-кой. В dll - ке хук на отлов мыши. Мне нужно чтобы при запуске Блокнота он устанавливался.Каа это сделать?Процедура типа if FindWindow(...) <>0 не помогает.И ещё, хук должен срабатывать при наведении на окно блокнота в определённом месте размером 100-300 пикс.Как это сделать?
В исходниках на сайте есть примеры работы с хуками, ищи там.
Ответить с цитированием
  #4  
Старый 17.09.2009, 11:32
Aless Aless вне форума
Прохожий
 
Регистрация: 13.04.2009
Сообщения: 26
Репутация: 10
По умолчанию

Я наверное просто плохо обяснил. Хук я уже написал, он на запрет нажатия левой кнопки мыши. Так вот, он должен устанавливаться при запуске блокнота. Сделать это никак не могу.
А в блокноте в определенной области срабатывать, то есть в квадрате 100-300 пикс не должен давать мышке нажиматься. Вот.
Ответить с цитированием
  #5  
Старый 17.09.2009, 16:08
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Так интересно отвечать на вопрос, не зная зачем это вообще такое нужно! ^_^

Могу предложить следующее. При попадании мышкиного курсора в заданную прямоугольную область, в callback-функции, адрес которой вы передавали во втором параметре SetWindowsHookEx, вытаскивайте дескриптор окна под курсором (с помощью функции WindowFromPoint). Получив дескриптор, считывайте класс окна (функция GetClassName) и сравнивайте его с классом окна Блокнота, т.е. с 'EDIT'. Если оказывается, что под курсором находится окно этого класса, то следующий шаг — определить имя исполняемого файла, которому принадлежит найденное окно. Это можно сделать так. Ну и наконец, если имя файла совпадает с именем файла Блокнота, то тогда делайте запрет на клик.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter