afro228offical Опубликовано 8 июня, 2016 Поделиться Опубликовано 8 июня, 2016 Здравствуйте ) Доброго (дня | утра | ночи | вечера ) У меня , как обычно вопрос Как узнать координаты курсора в чужом окне , зная его Handle ? Вот просто узнать координаты курсора можно , а как в ЧУЖОМ ОКНЕ я не знаю. Помогите пожалуйста Рассчитываю на your help ... Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 8 июня, 2016 Поделиться Опубликовано 8 июня, 2016 (изменено) POINT pPoint; CRect pRect; CDialog::GetWindowRect(&pRect); pRect.left + pPoint.x //координата по х + координата чужого окна pRect.bootom + pPoint.y //координата по у + координата чужого окна Вроде бы как-то так. Способ не идеальный, но должен работать. POINT CRECT Изменено 8 июня, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 8 июня, 2016 Автор Поделиться Опубликовано 8 июня, 2016 (изменено) Чет не ... Откуда CRECT И CDialog ? Нужно как в этой программе https://yadi.sk/d/szsyYHGusM8zJ но в ЧУЖОМ ОКНЕ . Изменено 8 июня, 2016 пользователем afro228offical Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 8 июня, 2016 Поделиться Опубликовано 8 июня, 2016 (изменено) 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 у меня студия вроде тупит, не находит член класса. Изменено 8 июня, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 8 июня, 2016 Поделиться Опубликовано 8 июня, 2016 1 час назад, afro228offical сказал: Как узнать координаты курсора в чужом окне , зная его Handle ? afro228offical, yandex выдаёт много ссылок по твоему запросу. Например: Цитата: Скрытый текст $HWND = HGET($_xmouse,$_ymouse) // запоминаем HWND окна под курсором $sx = $_xmouse // запоминаем положение курсора $sy = $_ymouse Ссылка: Скрытый текст http://crapware.aidf.org/forum/index.php?topic=1839.0 Цитата: Скрытый текст 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)); Ссылка: Скрытый текст http://www.programmersforum.ru/showthread.php?t=242015 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 8 июня, 2016 Автор Поделиться Опубликовано 8 июня, 2016 (изменено) Ну не то ... ( Я же пример скинул . Мне нужно узнать координаты курсора на чужом окне . Я ж говорил... А в яндексе ничего дельного нет... Изменено 8 июня, 2016 пользователем afro228offical Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 8 июня, 2016 Автор Поделиться Опубликовано 8 июня, 2016 (изменено) 41 минуты назад, partoftheworlD сказал: CRECT из atltypes.h, CDiaglog из afxwin.h. в visual studio 2015 afxwin.h не определяет. Да и как вы советуете , тоже не получается . Хотя бы проверили что ли Изменено 8 июня, 2016 пользователем afro228offical Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 8 июня, 2016 Поделиться Опубликовано 8 июня, 2016 GetCursorPos и ScreenToClient Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 8 июня, 2016 Автор Поделиться Опубликовано 8 июня, 2016 (изменено) Фуууф... Ловите Скрытый текст 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; Изменено 8 июня, 2016 пользователем afro228offical Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 8 июня, 2016 Автор Поделиться Опубликовано 8 июня, 2016 Не нифига Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 8 июня, 2016 Поделиться Опубликовано 8 июня, 2016 а не так, должно быть foo := ScreenToClient(WindowHandle, foo ); ? И почитай на форуме дельпи как правильно работать с GetCursorPos 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 8 июня, 2016 Поделиться Опубликовано 8 июня, 2016 Замени GetWindowRect на GetClientRect. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 9 июня, 2016 Автор Поделиться Опубликовано 9 июня, 2016 16 час назад, 2zolo2 сказал: а не так, должно быть foo := ScreenToClient(WindowHandle, foo ); ? И почитай на форуме дельпи как правильно работать с GetCursorPos так у foo тип tpoint , а функция screentoclient возвращает bool Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 9 июня, 2016 Автор Поделиться Опубликовано 9 июня, 2016 16 час назад, 2zolo2 сказал: Замени GetWindowRect на GetClientRect. Спасибо ) Вот тут реально хорошо подсказал с GetClientRect ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения