[英]AutoIT click Flash button?
Is it possible to click a flash button using AutoIT? 是否可以使用AutoIT单击闪光按钮? If so, can anyone please give me sample code for it?
如果是这样,有人可以给我示例代码吗?
You can just do a screen click at a location if you know where the button is going to be and that it is there. 如果您知道按钮的位置以及它在那里,您可以在某个位置单击屏幕。
If you don't know the state of the flash button (if it is there or not, where it is exactly) you could have a script that takes a screenshot, processes the image, and then creates and runs an AutoIT script that clicks the button. 如果你不知道flash按钮的状态(如果它在那里,它确切地说在哪里)你可以有一个脚本截取屏幕截图,处理图像,然后创建并运行一个AutoIT脚本,点击按钮。 I've had to do this in the past with Perl and ImageMagick.
过去我必须使用Perl和ImageMagick来做这件事。
Without taking a screenshot, you can calculate a hash of a pixel with PixelChecksum
. 如果不截取屏幕截图,您可以使用
PixelChecksum
计算像素的哈希值。 Then you compare with a previous version you calculate. 然后与您计算的先前版本进行比较。 You will need to check a range of pixel areas.
您需要检查一系列像素区域。
https://www.autoitscript.com/autoit3/docs/functions/PixelChecksum.htm https://www.autoitscript.com/autoit3/docs/functions/PixelChecksum.htm
Here is an example of using AutoIt to automate a flash game. 以下是使用AutoIt自动执行Flash游戏的示例。
#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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.