![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глобальное положение мыши [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