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

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

Перемещение мыши относительно координат чужого окна [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); // !!!


Наверх

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