Sign in to follow this  
Followers 0
ins0m

How would i write this script?

5 posts in this topic

Hello, i'm fairly new (several hours new) to this whole scripting language. I'm trying to write a fairly simple script, just to test some of the stuff this script tool can do.

The first one i wanted help with was something that did the following:

<run script>

when you press a key, let's say "8", it starts the script running. (so i suppose you'd start the script as paused, and 8 would trigger an unpause?)

then i want the script to write a sentence (let's say i already have notepad running, and it has focus)

so,

Send("Hello this is a sentence")

then i want it to hit enter, so

Send("{ENTER}")

then i want it to wait a while.. say.. i dunno, 7 seconds

then i want it to repeat, so it starts a new line (using the enter key) and every 7 seconds write the same phrase, until i hit 8 again, which will pause it. so in essence i could end up with 1000 lines of "hello this is a sentence".

I suppose i just want to learn how to pause/unpause, and use trigger buttons to get a script to run. And also how to use time.. is it a wait() function, or.. ? anyway..

Can anybody help me with writing this? :P It would be muchly appreciated.

Share this post


Link to post
Share on other sites



Look in the help file for HotKeySet(), it has an example of a pause/unpause otpion in it. Everything else you have other than a loop:

Opt('SendKeyDelay', 1)
HotKeySet("{Pause}", 'TogglePause'); Find hotkeyset in help for rest of code
While 1
    Send('Hello This Is A Sentence')
    Send('{ENTER}')
    Sleep(7000); 1 second is 1000 milleseconds / Sleep works in Milleseconds
    Send('{ENTER}')
Wend

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Ok, thanks, i'm not entirely certain though, is it something like this?

Opt('SendKeyDelay', 1)
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")


While 1
    Send('Hello This Is A Sentence')
    Send('{ENTER}')
    Sleep(7000); 1 second is 1000 milleseconds / Sleep works in Milleseconds
    Send('{ENTER}')
Wend

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

That looks right...

Now to take it a step further, if it is a specific application you are going to send to:

Opt('SendKeyDelay', 1)
Opt('WinTitleMatchMode', 4)
Global $Paused
Global $Window = 'WindowTitle Between the quotes'
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")


While 1
    If Not WinActive($Window) Then WinActivate($Window)
    Send('Hello This Is A Sentence' & '{ENTER}')
    Sleep(7000); 1 second is 1000 milleseconds / Sleep works in Milleseconds
    If Not WinActive($Window) Then WinActivate($Window)
    Send('{ENTER}')
Wend

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Now mind you, you won't have much control over your desktop because it will make sure the window is active that you want to send too.

If it's a window that you can send Control Commands too, and the 'area' that you want to send the text too has a ControlID (Use AutoInfo.exe included with autoit over the area you want to send the text too to see if it has a control id) then you may choose to use ControlSend() rather than Send:

Opt('SendKeyDelay', 1)
Opt('WinTitleMatchMode', 4)
Global $Paused
Global $Window = 'WindowTitle Between the quotes'
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")


While 1
    ControlSend($Window, '', 'ClassNameNN', 'Hello This Is A Sentence' & '{ENTER}')
    Sleep(7000); 1 second is 1000 milleseconds / Sleep works in Milleseconds
    ControlSend($Window, '', 'ClassNameNN', '{ENTER}')
Wend

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

You might want to try both options to see what works best for you.

Edit:

Combined the send text / send enter and same with controlsend text/enter

Edited by SmOke_N

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Ok that's great, worked a charm.. thanks a lot for the help!

No doubt i'll be back tommorow when i've got time to fiddle with this more :P

Cheers

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