Перейти к содержанию

Координаты курсора в чужом окне


Рекомендуемые сообщения

Здравствуйте ) Доброго (дня | утра | ночи | вечера )
У меня , как обычно вопрос :D
Как узнать координаты курсора в чужом окне , зная его Handle ?
Вот просто узнать координаты курсора можно , а как в ЧУЖОМ ОКНЕ я не знаю.
Помогите пожалуйста :)
Рассчитываю на your help ... 
J8JwqqJpPNI.jpg

Ссылка на комментарий
Поделиться на другие сайты

POINT pPoint;
CRect pRect;

CDialog::GetWindowRect(&pRect);

pRect.left   + pPoint.x //координата по х + координата чужого окна
pRect.bootom + pPoint.y //координата по у + координата чужого окна

Вроде бы как-то так. Способ не идеальный, но должен работать.

 

POINT

CRECT

 

 

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

Чет не ... Откуда CRECT И  CDialog ? 
Нужно как в этой программе 
https://yadi.sk/d/szsyYHGusM8zJ
но в ЧУЖОМ ОКНЕ .

Изменено пользователем afro228offical
Ссылка на комментарий
Поделиться на другие сайты

CRECT из  atltypes.h, CDiaglog из afxwin.h. 

 

Скрытый текст

POINT *pPoint = {};
CRect pRect;
CDialog *pDialog = nullptr;

pDialog->GetWindowRect(&pRect);

pRect.left + pPoint->x;   //координата по х + координата чужого окна
pRect.Bottom + pPoint->y; //координата по у + координата чужого окна

pRect.Bottom у меня студия вроде тупит, не находит член класса.

 

 

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, afro228offical сказал:

Как узнать координаты курсора в чужом окне , зная его Handle ?

afro228offical, yandex выдаёт много ссылок по твоему запросу.

Например:

Цитата:

Скрытый текст

$HWND = HGET($_xmouse,$_ymouse) // запоминаем HWND окна под курсором 
$sx = $_xmouse // запоминаем положение курсора
$sy = $_ymouse

 

Ссылка:

Цитата:

Скрытый текст

var
  WindowName:string;
  WindowRect : TRect;
  WindowHandle : HWND;
  CursorXpos,CursorYpos: Integer;
begin
  WindowName := Edit1.Text; //Заголовок окна, например "Form1"
  WindowHandle := FindWindow(nil,PChar(WindowName));

  windows.GetWindowRect(WindowHandle,WindowRect);

  memo1.Clear;
  memo1.Lines.Add('window left pos: ' + IntToStr(WindowRect.Left));
  memo1.Lines.Add('window top pos: ' + IntToStr(WindowRect.Top));

  CursorXpos := StrToInt(Edit2.Text);//Х
  CursorYpos := StrToInt(Edit3.Text);//Y

  SetCursorPos(WindowRect.Left + CursorXpos, WindowRect.Top + CursorYpos);

  memo1.Lines.Add('cursor final position: ' + IntToStr(WindowRect.Left + CursorXpos) + ',' + IntToStr(WindowRect.Top + CursorYpos));

 

Ссылка:

 

Ссылка на комментарий
Поделиться на другие сайты

Ну не то ... ( Я же пример скинул . Мне нужно узнать координаты курсора на чужом окне . Я ж говорил... А в яндексе ничего дельного нет...

Изменено пользователем afro228offical
Ссылка на комментарий
Поделиться на другие сайты

41 минуты назад, partoftheworlD сказал:

CRECT из  atltypes.h, CDiaglog из afxwin.h. 

в visual studio 2015  afxwin.h  не определяет. Да и как вы советуете , тоже не получается . Хотя бы проверили что ли :(

Изменено пользователем afro228offical
Ссылка на комментарий
Поделиться на другие сайты

Фуууф... 
Ловите
 

Скрытый текст

var
  WindowName:string;
  WindowRect : TRect;
  WindowHandle : HWND;
  foo : TPoint;
begin

  WindowName := 'Form1'; //Çàãîëîâîê îêíà, íàïðèìåð "Form1"
  WindowHandle := FindWindow(nil,PChar(WindowName));
   GetWindowRect(WindowHandle,WindowRect);
   GetCursorPos(foo);
 foo := ScreenToClient(   foo );
 if (foo.X >= 0) and (foo.Y >=0) and (foo.Y < (WindowRect.Bottom-WindowRect.Top)) and (foo.x < (WindowRect.Right-WindowRect.left))  then
  label1.Caption := IntToStr(foo.x) + '  ' +  IntToStr(foo.y ) ;
end;

 

Изменено пользователем afro228offical
Ссылка на комментарий
Поделиться на другие сайты

16 час назад, 2zolo2 сказал:

а не так, должно быть  foo := ScreenToClient(WindowHandle,   foo ); ?

И почитай на форуме дельпи как правильно работать с GetCursorPos

так у foo тип tpoint , а функция screentoclient возвращает bool 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.