找回密码
 加入
搜索
查看: 4126|回复: 13

[AU3基础] 脚本执行与暂停 CPU占用过高!

  [复制链接]
发表于 2011-3-29 10:44:50 | 显示全部楼层 |阅读模式
HotKeySet("{F7}","dangong")
HotKeySet("{F9}","zanting")
HotKeySet("{F10}","tuichu")
Dim  $n=1
While 1
        Sleep(100)
WEnd

Func zanting()
        $n = 0
        While 1 
                If $n = 1 Then 
                        $n = 0
                ExitLoop
        EndIf
        WEnd
EndFunc

Func dangong()
        While 1 
                $n = 1
                If $n = 1 Then 
                        Sleep(100)
                        Send("s")
        EndIf
WEnd
EndFunc

Func tuichu()
        $re = MsgBox(1,"提示","确定要退出模拟键盘连续键击吗?")
        If $re = 1 Then 
                Exit
        Else
        MsgBox(4096,"温馨提示","脚本目前处于暂停状态!",1)
                Send("{F9}")
                EndIf
EndFunc
不知道其他的暂停办法怎么用?望大大们给予指点!
发表于 2011-3-29 11:19:27 | 显示全部楼层
本帖最后由 apibits 于 2011-3-29 11:20 编辑
Global $T_time ,$T_Send
$T_time = 100  ;文字发送时间(毫秒)
$T_Send = "s"  ;文本内容
HotKeySet("{F7}","_CMDStart")
HotKeySet("{F9}","_CMDPause")
HotKeySet("{F10}","_CMDExit")
While 1
        Sleep(1000)
WEnd
;~ AdlibRegister()      如果希望程序启动就发送按键.则在这里注册
Func _CMDStart();启动事件响应
AdlibRegister( "_TxtSend",$T_time)
EndFunc

Func _CMDPause();暂停事件响应
AdlibUnRegister("_TxtSend")
EndFunc

Func _CMDExit();退出事件响应
        $re = MsgBox(1,"提示","确定要退出模拟键盘连续键击吗?")
        If $re = 1 Then 
            Exit
        Else
                        MsgBox(4096,"温馨提示","脚本目前处于暂停状态!",1)
                        Call("_CmdPause")
        EndIf
EndFunc

Func _TxtSend()
        Send($T_Send)
EndFunc        
看看我这个...用的是AdlibRegister() 函数....这函数很方便的..而且也不会狂吃CPU  [Orz]   
 楼主| 发表于 2011-3-29 12:01:40 | 显示全部楼层
回复 2# apibits

您这个的确不错! 那要是再设置一个热键F8 发送“W”字符,暂停键同时也用F9 ,应该怎么做呢?
发表于 2011-3-29 12:44:46 | 显示全部楼层
本帖最后由 apibits 于 2011-3-29 12:47 编辑

回复 3# xuanfeng1234567
那要是这样的话....  那就再添加喽. = =

代码中被!-!括起来的部分为新添加的 ...不知道还有没有高人有更方便的办法 = =
另外你看看和上次的代码有什么相似的?  dou shi chong fu de ....

Global $T_time ,$T_Send,!$T_Send2!
$T_time = 100  ;文字发送时间(毫秒)
$T_Send = "s"  ;文本内容
!$T_Send2 = "w"!
HotKeySet("{F7}","_CMDStart")
HotKeySet("{F9}","_CMDPause")
HotKeySet("{F10}","_CMDExit")
!HotKeySet("{F8}","_CMDwww")!
While 1
        Sleep(1000)
WEnd
;~ AdlibRegister()      如果希望程序启动就发送按键.则在这里注册
Func _CMDStart();启动事件响应
AdlibRegister( "_TxtSend",$T_time)
EndFunc
!Func _CMDwww(); 都是随便打的函数名,表介意...!
!AdlibRegister( "_TxtSend2",$T_time)!
!EndFunc !
Func _CMDPause();暂停事件响应
AdlibUnRegister("_TxtSend")
!AdlibUnRegister("_TxtSend2")!
EndFunc
Func _CMDExit();退出事件响应
        $re = MsgBox(1,"提示","确定要退出模拟键盘连续键击吗?")
        If $re = 1 Then 
            Exit
        Else
   MsgBox(4096,"温馨提示","脚本目前处于暂停状态!",1)
   Call("_CmdPause")
        EndIf
EndFunc
Func _TxtSend()
Send($T_Send)
EndFunc 
!Func _TxtSend2()!
!Send($T_Send2)!
!EndFunc!
发表于 2011-3-29 12:52:18 | 显示全部楼层
While 1
       _winapi_exmptyworkingset()
        Sleep(1000)
WEnd
 楼主| 发表于 2011-3-29 13:39:17 | 显示全部楼层
回复 4# apibits


但是又出现问题了!

ssssssssswswswswswswswswswswswswswswswswswsw  F7F8F9 发送的字符
wwwwwwwwwwwwwwwwwswswswswswswswswswswsw F9F8F7 发送的字符
本意是: F7只发送S
               F8只发送W
               F9暂停
发表于 2011-3-29 13:50:07 | 显示全部楼层
本帖最后由 netegg 于 2011-3-29 13:51 编辑

adlib用的时候在每次重新调用时要重新定义变量,换句话说,如果不涉及多个adlib还好办,如果是的话,运行一次register,就要运行一遍unregister
 楼主| 发表于 2011-3-29 14:27:34 | 显示全部楼层
回复 7# netegg

那netegg大大能否指点迷津,给个完整的例子呢?  谢谢了
发表于 2011-3-29 15:52:24 | 显示全部楼层
回复 8# xuanfeng1234567
你说的是资源占用的问题还是发送的问题
 楼主| 发表于 2011-3-29 16:06:00 | 显示全部楼层
资源占用还有发送的问题!嘿嘿
发表于 2011-3-29 18:36:48 | 显示全部楼层
资源占用前面告诉你了,发送按钮,做sleep(1000)的延迟(要不就是100,忘了,是系统里的一个数,大概延迟一下)
发表于 2011-3-29 22:39:34 | 显示全部楼层
adlib用的时候在每次重新调用时要重新定义变量,换句话说,如果不涉及多个adlib还好办,如果是的话,运行一 ...
netegg 发表于 2011-3-29 13:50



   对的...ADLIB这东西怕多...要是弄几个还行..多了工作量就恐怖了..
另外对于CPU高的解决办法就是Sleep
程序执行过程中的延时
发表于 2011-3-30 08:38:28 | 显示全部楼层
想知道全局暂停应该怎么设啊?
发表于 2011-3-30 12:30:02 | 显示全部楼层
啥叫全局暂停
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 10:54 , Processed in 0.088776 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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