![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перемещение мыши относительно координат чужого окна [D7, XP]
HF-Trade © (2006-06-18 17:22:00)Здравствуйте господа. Как реализовать вот такой сабж.
(Мне надо чтоб указатель мыши переместился в окне(чужом) относительно его координат.)
Пишу так -
Var
XXX: Hwnd;
X,Y: Integer;
MyMouse: TPoint;
Begin
XXX:=FindWindow('XXXXX',0);
GetCursorPos(MyMouse);
Windows.ScreenToClient(XXX,MyMouse);
X:=MyMouse.X;
Y:=MyMouse.Y;
PostMessage(XXX,WM_MOUSEMOVE,0,MakeLong(X,Y));
end;
???
Что не правильно делаю?
begin...end (2006-06-19 15:49:00) [1]> HF-Trade © (18.06.06 19:36) [2]
> Если делать так -
> SetCursorPos(X,Y)
> то курсор перемещаеться относительно координат экрана, а
> мне надо именно окна ХХХ...
Значит, нужно перевести координаты относительно окна в экранные координаты. Для этого есть функция ClientToScreen (модуль Windows).
А причём здесь WM_SETCURSOR, совершенно неясно. Это вообще нотификационное сообщение, и для изменения позиции курсора оно служить не может.
HF-Trade (2006-06-19 15:33:00) [2]А да, забыл совсем -
Координаты я получаю отдельно... тут просто все в мешанине кинул -
Var
XXX: Hwnd;
X,Y: Integer;
MyMouse: TPoint;
При создании формы -
XXX:=FindWindow('XXXXX',0);
Получаю координаты (Хот Кей Ctrl+A в TMainMenu) -
GetCursorPos(MyMouse);
Windows.ScreenToClient(XXX,MyMouse);
X:=MyMouse.X;
Y:=MyMouse.Y;
При нажатии на кнопку -
PostMessage(XXX,WM_MOUSEMOVE,0,MakeLong(X,Y));
Пробовал и так -
PostMessage(XXX,WM_SETCURSOR,0,MakeLong(X,Y));
Курсор остаеться на на месте....
HF-Trade (2006-06-18 20:23:00) [3]Прошу прощения - так тоже пробовал
PostMessage(XXX,WM_SETCURSOR,0,MakeLong(X,Y));
...
Юрий Зотов (2006-06-18 19:54:00) [4]> HF-Trade © (18.06.06 19:36) [2]
А где Вы перемещаете курсор? В Вашем коде он где был, там и остается.
HF-Trade (2006-06-18 19:36:00) [5]Есть окно ХХХ, я получаю координаты курсора (X,Y), в этом окне. Затем мне нужно чоб при нажатии на кнопку -
Окно ХХХ стало поверх всех, а курсор переместился в точку Х,Y.
Если делать так -
SetCursorPos(X,Y)
то курсор перемещаеться относительно координат экрана, а мне надо именно окна ХХХ...
GanibalLector (2006-06-18 19:14:00) [6]Не понял условие задачи.
Но все же попробую промедитировать :
GetCursorPos(P);
P:=ScreenToClient(P); // !!!