http://blog.163.com/z_x_mail/blog/#m=0&t=1&c=fks_084065081084082067082074087066093095088074087085 调试程序的时候,有时候会碰到这样的情况:我们希望的测试结果可能要等很长时间才能出来,但这个时间不确定,我们想用这个测试时间去做其他的事情,但有担心错过测试数据。 我现在就遇到了这样的情况:我将一些调试数据写到CPU的内存中,然后从内存显示窗口中去看,因为内存大小有限,所以时间长的话后面的数据会将前面的数据覆盖,但我也不知道这个数据什么时候能出来。 因此就想到用AutoIT+FastStone Capture来完成这个工作。 工作原理:在AutoIT脚本中将鼠标定位到内存显示窗口,然后在脚本中调用FastStone Capture的截屏热键,保存图像,自己设定好延时时间,就可以了。 注:你也可以用其他的热键程序和截图软件来完成这个功能。 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,$posm ; 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", "", "[ID:68282]" ) ;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", "", "[ID:68288]") ControlClick("DownLoad Display", "", "[ID:68282]") ; Send Hotkey Alt+PrintScreen to capture the data window Send("!{PRINTSCREEN}") Sleep(2000) ;ControlClick("DownLoad Display", "", "[ID:68282]") MouseClick("left") Sleep(8000) Until $i=0