xuanfeng1234567 发表于 2011-3-29 10:44:50

脚本执行与暂停 CPU占用过高!

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不知道其他的暂停办法怎么用?望大大们给予指点!

apibits 发表于 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    {:face (197):}

xuanfeng1234567 发表于 2011-3-29 12:01:40

回复 2# apibits

您这个的确不错! 那要是再设置一个热键F8 发送“W”字符,暂停键同时也用F9 ,应该怎么做呢?

apibits 发表于 2011-3-29 12:44:46

本帖最后由 apibits 于 2011-3-29 12:47 编辑

回复 3# xuanfeng1234567

那要是这样的话....那就再添加喽. = =

代码中被!-!括起来的部分为新添加的 {:face (396):} ...不知道还有没有高人有更方便的办法 = =
另外你看看和上次的代码有什么相似的?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!

netegg 发表于 2011-3-29 12:52:18

While 1
       _winapi_exmptyworkingset()
      Sleep(1000)
WEnd

xuanfeng1234567 发表于 2011-3-29 13:39:17

回复 4# apibits


但是又出现问题了!

ssssssssswswswswswswswswswswswswswswswswswswF7F8F9 发送的字符
wwwwwwwwwwwwwwwwwswswswswswswswswswswsw F9F8F7 发送的字符
本意是: F7只发送S
               F8只发送W
               F9暂停

netegg 发表于 2011-3-29 13:50:07

本帖最后由 netegg 于 2011-3-29 13:51 编辑

adlib用的时候在每次重新调用时要重新定义变量,换句话说,如果不涉及多个adlib还好办,如果是的话,运行一次register,就要运行一遍unregister

xuanfeng1234567 发表于 2011-3-29 14:27:34

回复 7# netegg

那netegg大大能否指点迷津,给个完整的例子呢?谢谢了

netegg 发表于 2011-3-29 15:52:24

回复 8# xuanfeng1234567
你说的是资源占用的问题还是发送的问题

xuanfeng1234567 发表于 2011-3-29 16:06:00

资源占用还有发送的问题!嘿嘿

netegg 发表于 2011-3-29 18:36:48

资源占用前面告诉你了,发送按钮,做sleep(1000)的延迟(要不就是100,忘了,是系统里的一个数,大概延迟一下)

apibits 发表于 2011-3-29 22:39:34

adlib用的时候在每次重新调用时要重新定义变量,换句话说,如果不涉及多个adlib还好办,如果是的话,运行一 ...
netegg 发表于 2011-3-29 13:50 http://www.autoitx.com/images/common/back.gif


   对的...ADLIB这东西怕多...要是弄几个还行..多了工作量就恐怖了..
另外对于CPU高的解决办法就是Sleep
程序执行过程中的延时

731106 发表于 2011-3-30 08:38:28

想知道全局暂停应该怎么设啊?

netegg 发表于 2011-3-30 12:30:02

啥叫全局暂停
页: [1]
查看完整版本: 脚本执行与暂停 CPU占用过高!