AutoIT нажимает кнопку Flash?

Можно ли нажать кнопку вспышки с помощью AutoIT? Если да, может ли кто-нибудь дать мне пример кода для этого?


person selva    schedule 16.04.2013    source источник


Ответы (3)


Вы можете просто щелкнуть экран в определенном месте, если знаете, где будет кнопка и что она там.

Если вы не знаете состояние кнопки вспышки (есть она или нет, где именно), у вас может быть скрипт, который делает снимок экрана, обрабатывает изображение, а затем создает и запускает скрипт AutoIT, который нажимает кнопку кнопка. Мне приходилось делать это в прошлом с Perl и ImageMagick.

person Narthring    schedule 16.04.2013
comment
Привет, спасибо, Нартринг, не могли бы вы показать мне какой-нибудь пример кода для AutoIT, нажимающего на флэш-память или итерации на флэш-памяти. - person selva; 18.04.2013
comment
Просто используйте функцию MouseClick, чтобы щелкнуть соответствующую область: autoitscript.com/autoit3/ docs/functions/MouseClick.htm Вам нужно заранее знать, где щелкнуть, и передать эти координаты X и Y в функцию. - person Narthring; 18.04.2013

Не делая снимок экрана, вы можете вычислить хэш пикселя с помощью PixelChecksum. Затем вы сравниваете с предыдущей версией, которую вы вычисляете. Вам нужно будет проверить диапазон областей пикселей.

https://www.autoitscript.com/autoit3/docs/functions/PixelChecksum.htm

person Community    schedule 11.12.2015

Вот пример использования AutoIt для автоматизации флеш-игры.

#include <IE.au3>

example()

Func example()
    $oIE = _IECreate("http://andkon.com/arcade/puzzle/greatmatemaster/")

    Local $oEmbedFlash = _IETagNameGetCollection($oIE, "embed", 0)
    Local $hWin = _IEPropertyGet($oIE, "hwnd")
    WinSetState($hWin, "", @SW_MAXIMIZE)

    ;get the x/y position of the flash game
    Local $iX = _IEPropertyGet($oEmbedFlash, "screenx")
    Local $iY = _IEPropertyGet($oEmbedFlash, "screeny")

    ;add click positions
    Local $aPlayChestBtn = [$iX + 240, $iY + 350]
    Local $a2b = [$iX + 120, $iY + 390]
    Local $a4b = [$iX + 120, $iY + 300]

    ;click the play chest button
    Click($aPlayChestBtn, 2000)

    ;move pawn to 4b with clicks
    Click($a2b, 1000)
    Click($a4b, 1000)

EndFunc   ;==>example

Func Click($aPos, $iWaitTime = 0)
    ;waits for a set amount of time for nothing to change where you want to click
    If $iWaitTime <> 0 Then PixelChecksumWait($aPos, $iWaitTime)

    ;clicks the area you want to click
    MouseClick("left", $aPos[0], $aPos[1], 1, 0)
EndFunc   ;==>Click

Func PixelChecksumWait($aPos, $iWaitTime = 5000)
    Local $iCheckSum

    ;wait to make sure there is no change in the region
    While 1
        ;get checksum
        $iCheckSum = PixelChecksum($aPos[1] - 5, $aPos[0] - 5, 10, 10)

        ;sleep to make sure there is no change
        Sleep($iWaitTime)

        ;exit loop if there was no change
        If $iCheckSum = PixelChecksum($aPos[1] - 5, $aPos[0] - 5, 10, 10) Then ExitLoop
    WEnd
EndFunc   ;==>PixelChecksumWait
person MrAutoIt    schedule 12.12.2015