找回密码  加入

AUTOIT CN

搜索
查看: 5323|回复: 12

[系统综合] 【已解决】关于循环停止的疑问...

[复制链接]
发表于 2011-8-30 22:13:12 | 显示全部楼层 |阅读模式
本帖最后由 alomoi 于 2011-9-1 10:26 编辑

按道理说按下热键 insert 后,鼠标点击的循环就会停止。
但是不知道为什么,第一次按下热键程序稍后还会自动恢复到循环中,要连续按两次才有效。

不知道其原因所在,求赐教m(_ _)m

以下为源码:
  1. #include <ButtonConstants.au3>
  2. #include <EditConstants.au3>
  3. #include <GUIConstantsEx.au3>
  4. #include <StaticConstants.au3>
  5. #include <WindowsConstants.au3>
  6. #NoTrayIcon
  7. $Form1 = GUICreate("鼠标连点器", 280, 115, 645, 352)
  8. $Button1 = GUICtrlCreateButton("开始", 176, 32, 75, 25)
  9. $Input1 = GUICtrlCreateInput("1000", 24, 32, 121, 21)
  10. $Label1 = GUICtrlCreateLabel("[等待]", 232, 88, 36, 17)
  11. GUISetState(@SW_SHOW)
  12. HotKeySet("{insert}","end1")
  13. HotKeySet("{esc}","quit")
  14. While 1
  15.         $nMsg = GUIGetMsg()
  16.         Switch $nMsg
  17.                 Case $Button1
  18.                         $1 = True
  19.                         GUICtrlSetData($Label1,"[运行]")
  20.                         While $1 = True
  21.                                  MouseClick("left")
  22.                                  Sleep(GUICtrlRead($Input1))
  23.                                 wend
  24.         Case $GUI_EVENT_CLOSE
  25.                 Exit
  26.         EndSwitch
  27. WEnd
  28. Func quit()
  29.         Exit
  30. EndFunc
  31. Func end1()
  32.         $1 = False
  33.         GUICtrlSetData($Label1,"[停止]")
  34. EndFunc
复制代码
发表于 2011-8-30 23:22:26 | 显示全部楼层
关注中,期待答案
发表于 2011-8-30 23:41:11 | 显示全部楼层
参考 3mile 的答案:
  1. #include <ButtonConstants.au3>
  2. #include <GUIConstantsEx.au3>
  3. #include <WindowsConstants.au3>
  4. Global $Flg = True
  5. Local $t = 0

  6. #Region ### START Koda GUI section ### Form=
  7. $Form1 = GUICreate("Form1", 318, 120, 468, 171)
  8. $Button1 = GUICtrlCreateButton("开始循环", 48, 60, 80, 40)
  9. ;$Button2 = GUICtrlCreateButton("结束循环", 208, 60, 80, 40)
  10. GUISetState(@SW_SHOW)
  11. #EndRegion ### END Koda GUI section ###
  12. GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

  13. While 1
  14.         $msg=GUIGetMsg()
  15.         Switch $msg
  16.                 case -3
  17.                         Exit
  18.                 Case $Button1
  19.                         if GUICtrlRead($Button1)="开始循环" and $Flg=True Then
  20.                                 GUICtrlSetData($Button1,"结束循环")
  21.                                 TEST()
  22.                         Else
  23.                                 GUICtrlSetData($Button1,"开始循环")
  24.                         EndIf
  25.         EndSwitch
  26. WEnd
  27.         
  28. Func TEST()
  29.         While $Flg
  30.                 ToolTip($t)
  31.                 $t+=1
  32.         WEnd
  33.         $Flg=True
  34.         $t=0
  35. EndFunc

  36. Func WM_COMMAND($hWnd, $msg, $wParam, $lParam)
  37.         #forceref $hWnd, $Msg
  38.         Local $nNotifyCode = BitShift($wParam, 16)
  39.         Local $nID = BitAND($wParam, 0x0000FFFF)
  40.         Local $hCtrl = $lParam  
  41.         Switch $hCtrl
  42.                 Case GUICtrlGetHandle($Button1)
  43.                         if GUICtrlRead($Button1)="结束循环" then
  44.                                 $Flg=False
  45.                         Else
  46.                                 $Flg=True
  47.                         EndIf
  48.         EndSwitch
  49. EndFunc   ;==>WM_COMMAND
复制代码
 楼主| 发表于 2011-8-31 09:04:41 | 显示全部楼层
3楼贴的代码之前查到过,其中停止循环部分的前半段不明白是何用意...
实际上目前自己也找到了其他解决方法
但是依然想知道1楼中的代码究竟是出于什么原因停止后会自动恢复循环...

求高人赐教m(_ _)m
发表于 2011-8-31 16:21:58 | 显示全部楼层
回复 1# alomoi

我测试后明白了.

问题在鼠标的位置.
先看看循环代码是怎么写的.

MouseClick("left")
Sleep(GUICtrlRead($Input1))

因为你按了开始按钮后鼠标还在开始按钮上.
代码还在循环中,,,所以自动按了开始按钮.

如果按5次开始按钮,就得按5次insert键才能停止.

你试一下按开始按钮后马上把鼠标移动其他地方.
然后按insert键,可以按一次就会停止.
发表于 2011-8-31 16:35:29 | 显示全部楼层
本帖最后由 lixiaolong 于 2011-8-31 16:39 编辑

回复 1# alomoi

这是一个解决方案.

游客,如果您要查看本帖隐藏内容请回复
 楼主| 发表于 2011-9-1 10:24:49 | 显示全部楼层
回复  alomoi

这是一个解决方案.

**** 本内容被作者隐藏 ****
lixiaolong 发表于 2011-8-31 16:35



m(_ _)m,感谢指导。
还真没考虑到这个问题....
发表于 2011-9-3 10:24:02 | 显示全部楼层
正在研究这个问题
发表于 2012-4-9 20:52:05 | 显示全部楼层
正在研究这个问题
发表于 2013-5-21 02:29:43 | 显示全部楼层
m(_ _)mm(_ _)m
发表于 2015-12-11 21:51:38 | 显示全部楼层
什么物件回复看看。
发表于 2019-3-15 11:28:32 | 显示全部楼层
谢谢分享,收藏了
发表于 2019-3-15 14:57:07 | 显示全部楼层
受教,学习中
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2019-7-20 22:39 , Processed in 0.078125 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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