找回密码
 加入
搜索
查看: 3429|回复: 6

[效率算法] 关于捕获鼠标右键动作的问题请教

  [复制链接]
发表于 2011-10-26 10:59:50 | 显示全部楼层 |阅读模式
我在论坛搜到一段代码,用于实现鼠标右键点击时截屏并保存。但运行时CPU耗用基本是50%,有点吃力,我的CPU是intel 3.00Ghz的。请大家看看怎么改代码降低资源占用,谢谢
#include <Misc.au3>
#include <ScreenCapture.au3>
#include <Misc.au3>
#Include <Date.au3>
HotKeySet("{f2}", "Terminate")
HotKeySet("{PRINTSCREEN}","CaptureR") ;截图热键"PRINTSCREEN"
Dim $i
Dim $str
dim $dateStr
$datestr=@year &@mon & @mday & "-"&@hour & @min& @sec

$dll = DllOpen("user32.dll")
DirCreate(@ScriptDir &"\cap\" & $datestr & "\右键")
While 1
     If _IsPressed("02", $dll) Then
                 $i+=1
         Call ("captureR")
                 sleep(100)
                 endif
WEnd
DllClose($dll)

Func CaptureR() ;全屏截图
        Local $hpath=@ScriptDir &"\cap\" & $datestr & "\右键\" & $i & ".jpg" ;
        $hBmp=_ScreenCapture_Capture("")
        _ScreenCapture_SaveImage($hpath,$hBmp)
EndFunc

Func Terminate()
    Exit 0
EndFunc
发表于 2011-10-26 14:53:08 | 显示全部楼层
用 GUIRegisterMsg 注册 鼠标右键消息
发表于 2011-10-26 15:24:23 | 显示全部楼层
我记得我做过一个的,要翻翻才知道了...
发表于 2011-10-26 15:42:30 | 显示全部楼层
#include <Misc.au3>
#include <ScreenCapture.au3>

HotKeySet('{f2}', '_Exit')

Local $i = 0, $dll = DllOpen('user32.dll')
Local $dateStr = @ScriptDir & '\cap\右键\' & @YEAR & @MON & @MDAY & '\'
DirCreate($dateStr)

While 1
        Sleep(10)
        If _IsPressed('02', $dll) Then _ScreenCapture_Capture($dateStr & @HOUR & @MIN & @SEC & '.jpg')
WEnd

Func _Exit()
        DllClose($dll)
        Exit
EndFunc   ;==>_Exit
发表于 2011-10-26 16:24:35 | 显示全部楼层
收到学习一下
 楼主| 发表于 2011-10-26 17:21:00 | 显示全部楼层
关键在sleep(10)?
回家试试
 楼主| 发表于 2011-10-27 15:50:53 | 显示全部楼层
老兄,你的方法太好了。CPU占用立马降到0-5%,而且还没发现有漏掉的。谢谢了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-1 07:10 , Processed in 0.083361 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表