Jump to content

Recommended Posts

Hello everyone,

I decided to rewrite/convert some autohotkey scripts to autoit. I know Ahk pretty well, but I'm obviously new at autoit.
I've done my best with this one and the problem I'm getting now is the error message "Error: Unknown function name".

Forgive me if it's something simple, but like I said, I'm completely new at this (been at it for one day, while ahk for years).

Here is the autoit script:
 

#RequireAdmin
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

$slowness = IniRead ("extra.ini", "slownesss", slowness, "0")
$slowdelay = IniRead ("extra.ini", "slownesss", slowdelay, "0")

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{DELETE}", "Terminate")

$track = 0

while 1
        global $pos2 = mousegetpos()
        Local $coord1 = PixelSearch (511, 388, 511, 424, 0xBD302E, 30)
        If Not @error Then
        exitloop
        EndIf
wend

For $redloop = 1 to 10 step 1

        global $pos2 = mousegetpos()
        local $coord2 = PixelSearch (511, 388, 511, 424, 0xBD302E, 30)
        If Not @error Then
            $track = 1
        EndIf

        If @error Then
            ExitLoop
        EndIf

        If $redloop > 0 Then
            $fade = $redloop / 100
        EndIf
        $move =  $slowness + fade

        if $track = 1 Then
            global $pos1 = mousegetpos()

            $newx1 = $pos1-$xpos2
            $newx2 = $pos2-$xpos1
            $movex = $newx2/move
            _MouseMovePlus($movex,0)

            global $pos2 = mousegetpos()
            $track = 0
        EndIf

Next

while 1
    sleep 1
    local $coord3 = PixelSearch (511, 388, 511, 424, 0xBD302E, 30)
    If @error Then
    exitloop
    EndIf
WEnd


Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
    WEnd
EndFunc


; mousemove------------------------------------------

Func _MouseMovePlus($X, $Y,$absolute = 0)
        global $MOUSEEVENTF_MOVE = 1
    Local $MOUSEEVENTF_ABSOLUTE = 32768
    DllCall("user32.dll", "none", "mouse_event", _
            "long",  $MOUSEEVENTF_MOVE + ($absolute*$MOUSEEVENTF_ABSOLUTE), _
            "long",  $X, _
            "long",  $Y, _
            "long",  0, _
        "long",  0)
EndFunc

Func Terminate()
    Exit 0
EndFunc

 

And here is the original Ahk script which I wrote (and works perfectly) :
 

#SingleInstance force
CoordMode, pixel,screen
CoordMode, mouse,screen 
SetBatchLines -1

IniRead, slowness, extra.ini, slownesss, slowness
IniRead, slowdelay, extra.ini, slownesss, slowdelay

mouseXY(x,y)
    {
        DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0)
}

track = 0

loop
{
        mousegetpos, xpos2, ypos2
        PixelSearch, Px, Py, 511, 388, 511, 424, 0xBD302E, 30, fast RGB
        if errorlevel = 0
        {
        sleep slowdelay
        gosub, red
        }
}

red:
loop, 10 {

        mousegetpos, xpos2, ypos2
        PixelSearch, Px, Py, 511, 388, 511, 424, 0xBD302E, 30, fast RGB
        if errorlevel = 0
        track = 1

        if errorlevel = 1
        break

        if (a_index > 0)
        fade := (a_index / 100)
        move :=  (slowness + fade)

        if track = 1
        {

            MouseGetPos, xpos1, ypos1           

            newx1 := (xpos1-xpos2)
            newx2 := (xpos2-xpos1)

            mousexy(newx2/move, 0)

            mousegetpos, xpos2, ypos2
            track = 0

        }
}

loop
{       
sleep 1

PixelSearch, Px, Py, 511, 388, 511, 424, 0xBD302E, 30, fast RGB
        if errorlevel = 1
return
}

return

 

Any help about the error is greatly appreciated and perhaps something else you may spot.
Thanks in advance

Edited by DigiBox
typo

Share this post


Link to post
Share on other sites
15 minutes ago, DigiBox said:

$slowness = IniRead ("extra.ini", "slownesss", slowness, "0")

You need quotes around the 3rd parameter

There are also other issues in your code. If you are using the full version of Scite, you can press Ctrl+F5 to perform a syntax check.

P.S. Mind telling us what this script will be used for once it's working correctly?

 

Share this post


Link to post
Share on other sites
18 minutes ago, Danp2 said:

You need quotes around the 3rd parameter

There are also other issues in your code. If you are using the full version of Scite, you can press Ctrl+F5 to perform a syntax check.

P.S. Mind telling us what this script will be used for once it's working correctly?

 

Thanks so much, that helped.

Yes, I'm using Scite. I'll try to work out the other problems with the script using it.

The script is used for making sort of an effect that slows down(/limits) the mouse movement sideways for a short while once the target color is found.
If the target color is found and it goes away quickly then the function is canceled and it goes back to searching for the color.

Once the script is working correctly the way to get it to react would be to have the red color appear in the center of the screen while you're moving the mouse quickly back and forth and you'll notice how it sort of sticks to where it is and gets harder to move for a short while (for the duration of the loop repeated 10 times.  The number of times decides the duration of the slow-down).
Then it waits for the red color to go away (errorlevel 1) before jumping back to the start of the script (first loop).

Edited by DigiBox

Share this post


Link to post
Share on other sites

It's not meant for any game. Sort of a way to automatically limit the mouse as opposed to using like a DPI shift button etc. I wanted to see in what ways it could be done. The color thing is just one creative way. It could be activated while holding a button etc also.
I'm comparing the effectiveness of ahk and autoit.

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

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By nacerbaaziz
      hello autoit team
      please i've a question for you.
      am creating a audio player
      and in this audio player i want to show the current trac info
      such as the total time and the position ... etc
      i know i can show it as label
      but the screen reader for the blind read the text every change
      because it have a screen scan
      what i want is to show this informations but such image or icon
      i mean i need to create
      GUICtrlCreatepic or GUICtrlCreateicon ....
      or some thing as that
      and show this informations as image on it
      i think that i can do that with the 
      _GDIPlus functions
      but i couldn't find the currect way to do it
      i tried the _GDIPlus_GraphicsDrawString
      but i couldn't know how it work
      what i need is a small example that create a GUI
      and add a multy line text to it as graphic or image.
      so i need a simple way because it will changed every sec
      i hope any one can help me to do that
      global $GUI = GUICreate("text", 400, 400) global $label = GUICtrlCreateLabel(GetText(), 10, 10, 380, 380) GUISetState() do sleep(100) until GUIGetMSG() = -3 exit func GetText() return StringFormat("file name is test.mp3 \r\n total time is 00:30:00 \r\n position is 00:05:50") endFunc  
    • By nooneclose
      I need help turning this string "20180913221626" into a formatted time string.
      I need to go from this: 20180913221626
      to this: 09/13/2018 10:16 PM
      I do not always know what the date will be so I can not just use a variable I need to actually convert/format. 
      I did see an older post in the forms that was basically the same question only the other guy did not post the working code and I can not figure out how to use _AD_GetObjectProperties properly to get what I want. 
      As always any help would be appreciated. 
      Here is the code I use to find the date, but it always gives me the unformatted version. 
      ;retrieve the items object $oItem = $oOutlook.Session.GetItemFromID($aItems[1][0], Default) $oItem.GetInspector $eSentOn = $oItem.SentOn ; When was the email sent? MsgBox("", "Sent On of the email", $eSentOn) ;******************************************************************************* ; Formats the date and time from the email ;******************************************************************************* ;Local $fDatenTime = _DateTimeFormat($eSentOn, 1) ;MsgBox("", "Formatted email time", $fDatenTime) $aProperties = _AD_GetObjectProperties($eSentOn) _ArrayDisplay($aProperties, "Did the conversion work?")  
    • By jtpr
      Has anybody ever imported a VuGen recording into AutoIT?  I like the recording cabability of VuGen and thought it would be great to use and then pull it into AutoIT to compile into an EXE.
       
      Jim
    • By FrancescoDiMuro
      Good evening
      I was looking around the forum if I could find a function that allows to convert a string into a 2 dimensional array...
      The first column of the array is always the same, but the rows could change...
      I have a pattern like:

      Column A|Column B
      Static Text 1|Data 1
      Static Text 2|Data 2
      Static Text 3|Data 3
      Static Text 4|Data 4

      Where, Static Text (1...4) will be always the same, and I don't want to change them... But, Data 1...4 are dynamic fields... So, I could have the pattern above AND I coould have the pattern I'm going to show you right below

      Column A|Column B
      Static Text 1|Data 1
      Static Text 2|Data 2
      Static Text 3|Data 3
      Static Text 4|Data 4
      Static Text 1|Data 5
      Static Text 2|Data 6
      Static Text 3|Data 7
      Static Text 4|Data 8

      How can I do in this case?

      Thanks for everyone's help


       
    • By FrancescoDiMuro
      Good morning guys
      I'd like to know if there is a way to convert a PDF in CSV or, eventually, in TXT, in order to read from it, like a database...
      I have a PDF and I think ( I dind't search a lot on the forum ) with AutoIt, but I'd like work with Excel styles...
      Does anyone know a good program which convert PDF to CSV? 
      PS: the PDF file is 5 MB, and it contains 439 pages...
      Thanks everyone for the help
       
×
×
  • Create New...