2009年7月24日星期五

AutoIT+FastStone Capture自动记录测试结果

调试程序的时候,有时候会碰到这样的情况:我们希望的测试结果可能要等很长时间才能出来,但这个时间不确定,我们想用这个测试时间去做其他的事情,但有担心错过测试数据。
我现在就遇到了这样的情况:我将一些调试数据写到CPU的内存中,然后从内存显示窗口中去看,因为内存大小有限,所以时间长的话后面的数据会将前面的数据覆盖,但我也不知道这个数据什么时候能出来。

因此就想到用AutoIT+FastStone Capture来完成这个工作。
工作原理:在AutoIT脚本中将鼠标定位到内存显示窗口,然后在脚本中调用FastStone Capture的截屏热键,保存图像,自己设定好延时时间,就可以了。要将FastStone Capture设置为自动保存模式,调用热键后,直接将图像存成文件,不会打开Faststone的编辑器。


建议将图像存成png或者gif格式,这样不见文件小,而且效果要比jpg好很多,jpg是有损压缩格式,png和gif是无损压缩格式。

注:你也可以用其他的热键程序和截图软件来完成这个功能。
AutoIT是一个可以根据脚本完成用户指定的工作的免费软件,功能很强大,可以模拟鼠标移动,按键输入等工作。
FastStone Capture是一个免费截图软件。

以下是脚本:
#cs ----------------------------------------------------------------------------

AutoIt Version: 3.3.0.0
Author: Michael

Script Function:
Start the Faststone capture 5.3, and will capture the memory display automatically.

#ce ----------------------------------------------------------------------------

$i=1
Dim $posdl[4],$posm[4]
; Run FastStone Capture
Run("C:\Program Files\FastStone Capture 5.3\FSCapture.exe");

WinWaitActive("FastStone Capture", "", 10)

Do
;Move mouse to the memory display window
;Get download display window pos
$posm = WinGetPos ( "DownLoad Display")
;Get memory display grid's position
$posdl = ControlGetPos ( "DownLoad Display", "", "[CLASS:TStringGrid]" )
;Move mouse to memory display grid
MouseMove($posm[0] + $posdl[0] + 15, $posm[1] + $posdl[1] + $posdl[3]/2,0)

; Always active the download display window
WinActivate ( "DownLoad Display")

; Click button 'Display Mem'
ControlClick("DownLoad Display", "", "[TEXT:Display Mem]")
ControlClick("DownLoad Display", "", "[CLASS:TStringGrid]")

; Send Hotkey Alt+PrintScreen to capture the data window
Send("!{PRINTSCREEN}")

Sleep(2000)

MouseClick("left")
;wait 15 minutes
Sleep(900000)
Until $i=0

没有评论:

发表评论