Sign in to follow this  
Followers 0
stefionesco

Can't stop the loop

5 posts in this topic

Hi all.

I'm a beginner in Autoit. I make a little script that must press a key from keyboard until I do stop it.

But it doesn't stop, and I don't know where is the error.

Maybe somebody light my way.

Here is the script:

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $MainWindow, $msg, $start, $stop, $key, $time
$MainWindow = GUICreate("Title", 240, 100)
GUICtrlCreateLabel("Push", 15, 15)
$key = GUICtrlCreateInput("", 75, 14, 20, 20)
GUICtrlCreateLabel("every", 98, 15)
$time = GUICtrlCreateInput("", 145, 14, 25, 20)
GUICtrlCreateLabel("seconds.", 175, 15)
$start = GUICtrlCreateButton("START", 45, 45, 55, 25)
$stop = GUICtrlCreateButton("STOP", 145, 45, 55, 25)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
Select
Case $msg = $start
WinSetState("", "", @SW_MINIMIZE)
Do
  Send(GUICtrlRead($key))
  Sleep(GUICtrlRead($time) * 1000)
Until $msg = $stop
EndSelect
WEnd

Share this post


Link to post
Share on other sites



You are not reading the GUI events anymore in your Do-Until loop.

Something like this?

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $MainWindow, $msg, $start, $stop, $key, $time
$MainWindow = GUICreate("Title", 240, 100)
GUICtrlCreateLabel("Push", 15, 15)
$key = GUICtrlCreateInput("", 75, 14, 20, 20)
GUICtrlCreateLabel("every", 98, 15)
$time = GUICtrlCreateInput("", 145, 14, 25, 20)
GUICtrlCreateLabel("seconds.", 175, 15)
$start = GUICtrlCreateButton("START", 45, 45, 55, 25)
$stop = GUICtrlCreateButton("STOP", 145, 45, 55, 25)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
Select
Case $msg = $start
WinSetState("", "", @SW_MINIMIZE)
Do
Send(GUICtrlRead($key))
Sleep(GUICtrlRead($time) * 1000)
$msg = GUIGetMsg()
Until $msg = $stop
EndSelect
WEnd

Visit the SciTE4AutoIt3 Download page for the latest versions        Beta files                                                          Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

I have tried this too, but it still didn't stop.

Share this post


Link to post
Share on other sites

Try it this way:

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $MainWindow, $msg, $start, $stop, $key, $time
$MainWindow = GUICreate("Title", 240, 100)
GUICtrlCreateLabel("Push", 15, 15)
$key = GUICtrlCreateInput("", 75, 14, 20, 20)
GUICtrlCreateLabel("every", 98, 15)
$time = GUICtrlCreateInput("", 145, 14, 25, 20)
GUICtrlCreateLabel("seconds.", 175, 15)
$start = GUICtrlCreateButton("START", 45, 45, 55, 25)
$stop = GUICtrlCreateButton("STOP", 145, 45, 55, 25)
GUISetState(@SW_SHOW)
While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    Select
        Case $msg = $start
            WinSetState("", "", @SW_MINIMIZE)
            $Timer = TimerInit()
            Do
                If TimerDiff($Timer) >= GUICtrlRead($time) * 1000 Then
                    Send(GUICtrlRead($key))
                    $Timer = TimerInit()
                EndIf
                $msg = GUIGetMsg()
            Until $msg = $stop
    EndSelect
WEnd

This allows the script to read the buttons every time through the Do loop but still only sends the key when your delay tells it to.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Now it's work. I will use this $Timer.

Thanks lot

Have a nice day.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0