|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Координаты в окне и во весь экран не совпадают
Здравствуйте!
Делаю бота для игры. Получаю координаты пикселя следующим образом: Код:
.. var r,g,b: Integer; PointColor: TColor; PointX,PointY: Integer; begin PointX:=685; PointY:=486; h1 := FindWindow(ProgName, nil); DC := GetDC(FindWindow(ProgName,'')); PointColor:= GetPixel(DC,PointX,PointY); r:=GetRValue(PointColor); g:=GetGValue(PointColor); b:=GetBValue(PointColor); // дальше идет сравнение цвета пикселя и если есть совпадение передаем нажатие кнопки. Проблема в том, что если игра установлена на весь экран с разрешением 1024х768 все срабатывает, а если поставить в оконном режиме с тем же разрешением - нет... что я делаю не так? Заранее спасибо. Последний раз редактировалось Alloc, 08.10.2015 в 14:49. |
#2
|
|||
|
|||
ClientToScreen и ScreenToClient спасут отца русской демократии.
На свмом деле, когда ты у окна получаешь точку, то ты получаешь ее в системе координат окна. Частный случай, когда окно развернуто во весь экран, системы координат окна и всего экрана просто совпадают. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Alloc (08.10.2015)
|
#3
|
||||
|
||||
Цитата:
спасибо за помощь) |
#4
|
||||
|
||||
Цитата:
что то не получается у меня разобраться.. Скажите пожалуйста, в моем конкретном случае как это сделать? |
#5
|
|||
|
|||
Т.к. ты работаешь с чужим окном, то получи его положение и, соответственно, пересчитай свои координаты. Просто для "родных" окон у VCL есть готовый метод пересчета, а для чужих придется самому все делать (там еще, возможно, потребуется получить размер рамки и его тоже учесть в перерасчетах).
|
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Alloc (08.10.2015)
|
#6
|
||||
|
||||
Спасибо за ответ.
Я так понимаю в момент выполнения функции: Код:
Windows.ClientToScreen(h1,Point); |
#7
|
||||
|
||||
Где в описании хоть что-то про активность окна? Она ж просто берет твою точку и прибавляет к ней левый верхний угол заданного окна.
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Alloc (09.10.2015)
|