Jump to content

[Solved]Can controldsend call a function?


Ignacio
 Share

Recommended Posts

Good day, i have been trying to make and script so i dont get kicked from a chat application, it sends a key stroke to the application ever 8 or so minutes (if i didnt the math wrong), it work when i leave the window in first plane and i go to do another thing out of the pc, but now i want it to work when the window program isnt focused (still not minimized since i get is kinda different controls for minimzed windows) and stil be able to use the computer. I have been playing with the controlsend() function but i cant seem to make it work the way i want.

Global $UnPaused
HotKeySet("{f9}", "TogglePause")
HotKeySet("{f8}", "Terminate")
global $counter = 0
Local $hWnd = WinWait("[CLASS:LWJGL]", "")

While 1
    Sleep(100)
    ToolTip("Script is Paused",0,0)
WEnd

Func TogglePause()
    $UnPaused = NOT $UnPaused
    While $UnPaused
        ToolTip("Sending...",0,0)
        ControlSend($hWnd, "", "", Call("Specific"))

    WEnd
 EndFunc

 Func Specific()
     
        If $counter = 800 Then
           send("{space}")
           $counter = 0
        EndIf
        $counter += 1
        Sleep(700)
        EndFunc


Func Terminate()
    Exit 0
EndFunc

So my doubt lays on the way im using Controlsend() to call a function (if it is possible to use both like that) or if the looping/function is done wrong, since i get kicked from the chat

Thanks in advance

edit: showing the script

Edited by Ignacio
Link to comment
Share on other sites

You're not using ControlSend to do anything. You're using this line to TRY and do a ControlSend, but all it's doing is calling the function, and that function is trying to do a Send instead.

ControlSend($hWnd, "", "", Call("Specific"))

Get rid of the send in that function and just use the function to do a ControlSend. Get rid of the ControlSend line you're using too, and do it inside the function if you feel the need.

Also, you don't need to use CALL at all. In fact you rarely ever need to use Call to call a function.

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

Link to comment
Share on other sites

2 hours ago, BrewManNH said:

You're not using ControlSend to do anything. You're using this line to TRY and do a ControlSend, but all it's doing is calling the function, and that function is trying to do a Send instead.

ControlSend($hWnd, "", "", Call("Specific"))

Get rid of the send in that function and just use the function to do a ControlSend. Get rid of the ControlSend line you're using too, and do it inside the function if you feel the need.

Also, you don't need to use CALL at all. In fact you rarely ever need to use Call to call a function.

OK, so i modified to shape it like this (changed to notep to test it) and it worked as intended on notepad

Func TogglePause()
    $UnPaused = NOT $UnPaused
    While $UnPaused
        ToolTip("Sending...",0,0)
        If $counter = 800 Then
           ControlSend($hWnd, "", "Edit1", "{space}")
           $counter = 0
        EndIf
        $counter += 100
         sleep(700)

    WEnd
 EndFunc

Sadly the aplication im using doesnt have info to put on the "Edit1" place, im thinking of using the process ID, but that is a question for another thread. Thanks a lot

Link to comment
Share on other sites

By the way, you'll be sending more than once a second

700 = 0.7 seconds approx

you want...

$sleep = (1000 * 60) * 8 ; 8 minutes approx

; 1000 = 1 second

; (1000 * 60 = 1 minute) * 8 = 8 minutes

Sleep($sleep)

 

Edited by JohnOne

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...