[已解决]如何占用资源小,而自动等待窗口出现
本帖最后由 lzlcn 于 2015-8-23 11:15 编辑由于我公司的ERP系统限制了操作时间,久没操作就会弹出一个确认的窗口,当我离开电脑久不动,就自动退出了。
所以我想做一个自动等待窗口出现,就去自动点击弹出的窗口,因为这窗口不定时的会出出来,需要去点击一下。
以下是我写的程序,但问题来了,这种循环占用CPU运行,是否有其他办法可以运行资源很小又可以达到我要求呢?#include <Excel.au3>
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
While 1
If WinExists("审核框") Then;判断窗口是否出现
WinActivate("审核框","") ;等窗口出现
;Send("{ENTER}")
ControlClick ( "审核框", "","", "left", 1, 35, 11 ) ;点击确认
;TrayTip("提示","窗口已点击关闭",5)
;MsgBox(4096, "测试", "窗口已点击关闭")
EndIf
WEnd
;;;;;;;;
;;;;;;;;
Func TogglePause()
$Paused = Not $Paused
While $Paused
Sleep(100)
ToolTip('程序脚本 "暂停"运行', 0, 0)
WEnd
ToolTip("")
EndFunc ;==>TogglePause
Func Terminate()
Exit 0
EndFunc ;==>Terminate #NoTrayIcon;這一段是不讓程序圖標顯示在通知檔位,根據個人需要來決定是否開啟此功能
#include <Excel.au3>
HotKeySet("{ESC}", "Terminate")
While 1
sleep(100)
_ReduceMemory(@AutoItPID)
If WinExists("你的視窗標題") Then
ControlClick("你的視窗標題","","你的視窗控制項ID")
MsgBox(4096, "提示", "窗口已經關閉",3);這一段可以不要
EndIf
_ReduceMemory(@AutoItPID)
WEnd
_ReduceMemory(@AutoItPID)
Func Terminate()
Exit
EndFunc
_ReduceMemory(@AutoItPID)
Func _ReduceMemory($i_PID = -1)
If $i_PID <> -1 Then
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle)
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle)
Else
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
EndIf
Return $ai_Return
EndFunc 回复 2# txen548
谢谢您的解答,试了,可以,占用内存很小,而且CPU也不会占用,非常好,还有解释!也希望此贴也给其他爱好AUTOIT的朋友带来帮助! 不用客氣,其它這一段優化內存的代碼本來就是本講壇的 _ReduceMemory(@AutoItPID)
Func _ReduceMemory($i_PID = -1)
If $i_PID <> -1 Then
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle)
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle)
Else
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
EndIf
Return $ai_Return
EndFunc有事情提問前先搜索一下講壇看有沒有解決辦法,如實在沒有解決辦法再發提問貼,本講壇還是有很多熱心A友的.
页:
[1]