JJ1122

I'm stuck with while/if loop... please help!

8 posts in this topic

#1 ·  Posted (edited)

#include <Misc.au3>

While 1
   If _IsPressed(59) Then
      Send("{B}")
      MouseDown("left")
   Else
      Send("{B}")
      MouseUp("left")
   EndIf
WEnd

 

I want the script to do this:

- if I press "Y", send "B" once and hold left click down until i release "Y".

- if I take my hands off of "Y" key, then send "B" once again and release left click.

 

but the script I made has problems.

when I run the script, it starts sending "B" repeatedly, and my left click won't work.

 

I'm not smart enough to figure out what the problem is... please help me!

sorry for bad English.

 

Edited by JJ1122

Share this post


Link to post
Share on other sites



@JJ1122 can you give some more information about what you're trying to do? There is almost always an easier way to accomplish things besides sending mouse clicks.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites

 

1 hour ago, JLogan3o13 said:

@JJ1122 can you give some more information about what you're trying to do? There is almost always an easier way to accomplish things besides sending mouse clicks.

i want to simplify "press keyboard - press keyboard - click - drag - press keyboard - drop" to "press keyboard - release keyboard".

it's for shopping uses in a korean website.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

5 hours ago, JJ1122 said:

#include <Misc.au3>

While 1
   If _IsPressed(59) Then
      Send("{B}")
      MouseDown("left")
   Else
      Send("{B}")
      MouseUp("left")
   EndIf
WEnd

 

I see that it checks if a button is pressed, if not, it executes Send("{B}") and MouseUp("left").

If...Else...EndIf Example:

If 1+2=8 Then
    MsgBox(0,"","1+2=8 is correct!"&@CRLF _
    &"That's impossible, so you won't see this message.")
Else
    MsgBox(0,"","1+2=8 is NOT correct!")
EndIF



You may want to try this script:
 

#include <Misc.au3>

While 1
    If _IsPressed(59) Then;Checks if button is pressed
      
      ;If button is pressed, it will execute this script:
      Send("{B}")
      MouseDown("left")

      Do
        Sleep(25)
        ;Sleep until button is released.
      Until Not _IsPressed(59)
      
      ;Execute some script if button is released...
      Send("{B}")
      MouseUp("left")

    EndIf

    Sleep(50);It's always a good idea to add Sleep() to avoid using all CPU usage.
WEnd

I haven't tested this script, but I think it should work.

Edited by algiuxas

42783.png

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Here is another small example:

#include <Misc.au3>

HotKeySet("{ESC}", "quitter")

$beepFrequency = 300

While True
    If _IsPressed(71) Then
        ConsoleWrite("Started pressing F2" & @CRLF)
        While _IsPressed(71)
            ; Keep increasing the sound frequency while F2 is pressed
            $beepFrequency += 50
            ConsoleWrite($beepFrequency & @CRLF)
            Beep($beepFrequency, 100)
        WEnd
        ConsoleWrite("Stopped pressing F2, resetting frequency and playing single end tone" & @CRLF)
        $beepFrequency = 300
        Beep(150, 300)
    EndIf
WEnd

Func quitter()
    Exit
EndFunc   ;==>quitter

Note that I changed the key to F2 (key 71) to make it easier to test in Scite. Also note that this script will produce sound.

Edited by SadBunny
Fixed comment

Roses are FF0000, violets are 0000FF... All my base are belong to you.

Share this post


Link to post
Share on other sites
#include <Misc.au3>

HotKeySet("{ESC}", "ESC")
Func ESC()
    Exit
EndFunc
ToolTip("Press [ESC] button to stop this script!",0,0,"Press [Y] button!")

$i = False

While 1
    If _IsPressed(59) Then
        Beep(900.0,100)
        Do
        Until Not _IsPressed(59)
        $i = Not $i
        If $i Then
          Send("{B}")
          MouseDown("left")
        Else
          Send("{B}")
          MouseUp("left")
        EndIf
    EndIf
WEnd

You don't need to hold Y button, just press once to hold left mouse button, and when you are done, press Y button again to release left mouse button. :)


42783.png

Share this post


Link to post
Share on other sites
1 hour ago, algiuxas said:
#include <Misc.au3>

HotKeySet("{ESC}", "ESC")
Func ESC()
    Exit
EndFunc
ToolTip("Press [ESC] button to stop this script!",0,0,"Press [Y] button!")

$i = False

While 1
    If _IsPressed(59) Then
        Beep(900.0,100)
        Do
        Until Not _IsPressed(59)
        $i = Not $i
        If $i Then
          Send("{B}")
          MouseDown("left")
        Else
          Send("{B}")
          MouseUp("left")
        EndIf
    EndIf
WEnd

You don't need to hold Y button, just press once to hold left mouse button, and when you are done, press Y button again to release left mouse button. :)

it works just like i wanted! thank you so much

1 person likes this

Share this post


Link to post
Share on other sites
14 minutes ago, JJ1122 said:

it works just like i wanted! thank you so much

I'm happy to help you :)


42783.png

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

  • Similar Content

    • badcoder123
      By badcoder123
      Anyone know how to access the information circled in the photo?
       

    • AndreyS
      By AndreyS
      Dear developers and creators of the language, please explain to me why when pressing the combination Crtl + Shift + C from the 5th or the 10th time "sticks / sinks" Ctrl or Shift? And then you need to press Ctrl or Shift again to reset their triggering. I only need to use hot keys like in the example!
      The code is a small example. Its essence is that when a user in the editor selects any number and presses a combination, then it increases by 1. 
      Dim $x HotKeySet("+^c","Calc") While 1 Sleep(10000) WEnd Func Calc() Send("^c") Sleep(50) $x=ClipGet()+1 ClipPut($x) Send("^v") EndFunc I thought that in my program some kind of glitch was searching for a reason for a long time. And it turned out that apparently somehow the work of some functions used in the example is not compatible. 
      Tell me, please, what is the problem?
    • Eli_jahbot
      By Eli_jahbot
      my esteemed autoits,
      i need your help once again. The bold and italics below are what i will be referring to. I need a message box to exit the script if Cancel is pressed and to continue the script if OK is pressed. I have tried multiple ways to do this to no avail. Can someone please breakdown how i go about this via Message box, and or Input box as I'm sure they will follow the same logic. I appreciate your time and assistance.
       
      Example:
      global $url, $username, $password, $sspassword
      $url = "https://securegateway.fairview.org"
      $username = "XXX"
      $password = "YYY"
      $sspassword = "ZZZ"
      #include <Constants.au3>
      #include <msgboxconstants.au3>
      ShellExecute ($url)
      WinWaitActive("window")
      send($username)
      send("{tab}")
      send($password)
      send("{enter}")
      msgbox($mb_okcancel, "Wait for the page to load then select OK to continue script", "Wait for the page to load then select OK to continue script")
      if($idok)
      send("+{tab 8}")
      send("{enter}")
      if ($idcancel) then Exit
      EndIf
    • ur
      By ur
      If you observe in below code.
      Func _WinWaitActivate($title,$text,$timeout=$time_out) Logging("Waiting for "&$title&":"&$text) $dHandle = WinWait($title,$text,$timeout) if not ($dHandle = 0) then If Not WinActive($title,$text) Then WinActivate($title,$text) WinWaitActive($title,$text,$timeout) Else Logging("Timeout occured while waiting for the window...") Exit EndIf EndFunc WinActivate("Untitled - Notepad") $p = "Notallowed1!!" Send("{ENTER}{ENTER}{ENTER}{ENTER}"& $p &"{ENTER}create{SPACE}database{SPACE}"& $p &";{ENTER}") In the notepad if you observe, ! is missing in the text got.
       
      Is there way to get that also printed.
    • rawkhopper
      By rawkhopper
      Hello everyone,
      I have a script that is automating a piece of sluggish software.  I want to automate it with a bit of caution and I am not sure the best way to do it.  ControlSend works great most of the time.  If I have it enter 10 into a text box every once in a while it will enter 1 or 11 and then hit enter.
      To overcome this I use MouseClick to select the text I just entered and then see if it matches the string it was supposed to put in before it hits enter.  This seems to work but what I love about ControlSend is there is less room for human interaction messing it up.  
      Yes I could block input but I prefer not to do that (permissions).
      Is there a better way of doing this?  Any Help would be much appreciated.
      Anyway here is the snippet of the script in question:
      Func KVSend () WinActivate ( "Window", "" ) Local $WindowPos = WinGetPos("Window", "") If $kV < 30 Then WinActivate ( "Window", "" ) ControlClick ("Window", "", 1001) ;Click in Accel Voltage box Sleep (100) ControlSend ("Window", "", 1001, $kV) ; \ kV Sleep (100) MouseMove($WindowPos[0]+130,$WindowPos[1]+75,1) MouseClick($MOUSE_CLICK_LEFT) MouseClick($MOUSE_CLICK_LEFT) Send ("^c") Local $clip = ClipGet () If $clip = $kV Then ControlSend ("Window", "", 1001, "{ENTER}") ;Hit ENTER if value is correct Sleep (100) ControlClick ("Window", "", 1518) ;Lens Clear Else Send ("{BACKSPACE}") KVSend() ; If value is incorrect try again EndIf EndIf