Что нового

Автоматизация Определить разрешение экрана и кликнуть в координаты пикселя

Alex58reg

Новичок
Сообщения
41
Репутация
0
Помогите пожалуйста у меня такая проблема в общем есть скрипт который клацает по цвету пикселя в центре экрана на на широкоформатном мониторе 1920х1080
все прекрасно вопрос в том что когда я перехожу за другой комп с квадратным дисплеем и разрешением в 1280х1024 к примеру то скрипт не работает
мне нужно чтобы скрипт сам определял какой моник и какое на нем разрешение и не напрягаясь работал
 

Alecsis

Осваивающий
Сообщения
124
Репутация
44
Штатные макросы @DesktopWidth и @DesktopHeight чем-то не устраивают?
Код:
ConsoleWrite('w = ' & @DesktopWidth & @CRLF)
ConsoleWrite('h = ' & @DesktopHeight & @CRLF)
 
Автор
A

Alex58reg

Новичок
Сообщения
41
Репутация
0
как это запихать в это

Код:
#include <Misc.au3>
#include <WindowsConstants.au3>

Global $Test = 0, $i, $color = 0x00FF00, $scan = 0

While 1 
If $Test = 1 then
PixelSearch(948,1,872,540,$color)
If Not @error then
$i = 1
While $i < 2
Call('clic')
$i = $i + 1
WEnd
EndIf
EndIf
WEnd


Func startTest()
    $Test = 1
EndFunc

Func offTest()
    $Test = 0
EndFunc 

Func clic()
    AutoItSetOption('MouseClickDelay',100)
        MouseClick('left')
        EndIf
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Переименовал тему. Тема должна отражать суть вопроса
 

JohnWind

Новичок
Сообщения
58
Репутация
0
как это запихать в это

Код:
#include <Misc.au3>
#include <WindowsConstants.au3>

Global $Test = 0, $i, $color = 0x00FF00, $scan = 0

While 1
If $Test = 1 then
PixelSearch(948,1,872,540,$color)
If Not @error then
$i = 1
While $i < 2
Call('clic')
$i = $i + 1
WEnd
EndIf
EndIf
WEnd


Func startTest()
    $Test = 1
EndFunc

Func offTest()
    $Test = 0
EndFunc

Func clic()
    AutoItSetOption('MouseClickDelay',100)
        MouseClick('left')
        EndIf
EndFunc
возможно как-то так:
Код:
MouseMove (@DesktopWidth/2, @DesktopHeight/2)
MouseClick ("left", @DesktopWidth/2, @DesktopHeight/2)
;~ Клик в центре экрана


но похоже тут проблема чуть в иной плоскости...
Вы используете PixelSearch(948,1,872,540,$color)

Это поиск пикселя-с-цветом в определённом секторе >> Ищет пиксель указанного цвета в указанной прямоугольной области экрана

скорее всего проблема появляется потому, что ваш пиксель оказывается вне зоны поиска, отчего и случается косяк.
Вариант1: объявите зону поиска по всему экрану
Вариант2: если жалко времени или есть шанс что есть другой пиксель такого же цвета - определите зону именно для разрешения 1280х1024
и включите условие вроде:

Код:
$ScrWidth = @DesktopWidth

if $ScrWidth = 1920 Then
    PixelSearch(948,1,872,540,$color)
Elseif $ScrWidth = 1280 Then
    PixelSearch(AAA,BBB,CCC,DDD,$color)
;~     Где вместо букв укажите границы нужной области поиска для разрешения 1280х1024
EndIf


Если разрешений не множество - то намного легче определить сектора поиска для каждого из (нескольких) разрешений, вместо изобретения "универсального решения"....
Не самое изящное решение, но для ограниченного кол-ва случаев... в виде заплатки-до-лучших-времён - сойдёт...
 
Верх