Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глобальное положение мыши [D7, WinXP]


Alex_C ©   (2005-09-13 11:59:00) 

Дано: есть приложение с несколькими формами.
Надо: написать ф-цию. которая отслеживала бы текещее положение мыши где бы она не находилась.
Если просто отслеживаю WM_MOUSEMOVE - то отслеживается только у конкретного окна.


Юрий Зотов   (2005-09-14 04:36:00) [1]

> Германн ©   (14.09.05 01:36) [7]

Разве в ветках надо читать только сабж? А то, что написали ранее - не надо?

См. [3]:
"... как ОТСЛЕЖИВАТЬ перемещение по всему экрану ..."

Что и есть глобальный хук.


Германн   (2005-09-14 01:36:00) [2]

2 Юрий Зотов ©   (14.09.05 00:45) [6]
А из сабжа, имхо, не следует необходимость "глобального хука" :(


> Дано: есть приложение с несколькими формами.
> Надо: написать ф-цию. которая отслеживала бы текещее положение
> мыши где бы она не находилась.

Это, в частности, можно понять и как "отслеживание мыши в одном приложении имеющим несколько форм. В каком бы месте, любой формы(окна) приложения, она бы не находилась".


Юрий Зотов   (2005-09-14 00:45:00) [3]

> Big Joe ©   (13.09.05 17:20) [4]
1. И будет Access Violaion.
2. Вы ветку читали?

> Кефир87 ©   (14.09.05 00:35) [5]
Вы ветку читали?

> Alex_C ©   (13.09.05 16:51) [3]
Нужен глобальный хук на мышь. В сети примеров полно, ищите по ключевому слову SetWindowsHook.


Кефир87   (2005-09-14 00:35:00) [4]


var
 p:TPoint;
begin
 GetCursorPos(p);
 if (p.x>10)and(p.x<50)and(bla-bla-bla) then
    ShowMessage('Ваша мышь там');
end;


Big Joe   (2005-09-13 17:20:00) [5]

procedure TForm1.FormClick(Sender: TObject);
var
 MyMouse: TMouse;
begin
 Form1.Caption := inttostr(MyMouse.CursorPos.x) + 'Х ' +
 inttostr(MyMouse.CursorPos.y);
end;


Alex_C   (2005-09-13 16:51:00) [6]

C a-wbtq которая ОПРЕДЕЛЯЕТ текущее положение мыши - тут все понятно, GetCursorPos, а вот как ОТСЛЕЖИВАТЬ перемещение по всему экрану, чтоб как только мышь окажется в како-то его области, делать какое либо действие? Как я уже писал выше, если использовать WM_MOUSEMOVE то отслеживается только в той форме, где оно определено.


kblc   (2005-09-13 12:42:00) [7]

Windows.GetCursorPos(var lpPoint: TPoint): LongBool;


Наиль   (2005-09-13 12:28:00) [8]

Глупо, но верно:
по таймеру Mouse.CursorPos


Наверх

Титульная страница Поиск, карта сайта Написать письмо