Sign in to follow this  
Followers 0
AutoitMike

Cant Move code to GUI Window

5 posts in this topic

I have 5 different scripts that perform different automation functions.

They all work very well.

I thought that putting all of them into a single window with a button for each one would be simple and easy.

I created a function for the first script and it worked.

I created a second button that did not point to anything.

I created a new function called "EMailCL" that has no code. I ran the gui and it ran.

Then I pasted the code from the script (which runs fine) in between "Func EMailCL()" and "EndFunc" and when I attempt to run the GUI I get a syntax error "Func" with a caret under the "F" of Function.

There are no functions in "EMailCL"

What gives???

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Post the code and I can try to make it work the way you want it to.

Edited by songersoft

I am not a lawyer.  (-_-) Xandy About  (^o^) Discord - Xandy Programmer

Share this post


Link to post
Share on other sites

Here is the code that works by itself as a standalone script:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****

#AutoIt3Wrapper_outfile=C:\HouseMaster\Programs\SendDocs.exe

#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <Date.au3>

dim $DT ;datedim $FC ;File Count

Dim $FL[10] ;file list

;Dim $CompName=EnvGet("computername")

#include <File.au3>

#include <Array.au3>

$DT=stringreplace(_nowcalcdate(),"/","-")

;$FC=DirGetSize("C:\Documents and Settings\Mike\My Documents\My Pictures\Toolbox\"&$DT,1)

;==========================================================================================

;new code, get file names and number of files in folder.

$FileList = _FileListToArray(EnvGet("USERPROFILE")&"\My Documents\My Pictures\Toolbox\"&$DT, "*.pdf", 1)

Opt("MouseCoordMode", 0)

;=========================================================================

;Goto Outlook

If Not WinActivate("Microsoft Outlook Web Access") Then

MsgBox(0,'',"Cant find outlook")

Exit

EndIf

For $I = 1 to $FileList[0]

MouseMove(300,210,0)

MouseClick("left")

;New message

WinWait("Untitled -- Message")

;===========================================================

;size the window properly

$WS=WinGetClientSize("Untitled -- Message")

If $WS[0] < 710 or $WS[1] < 420 Then

;MsgBox(0,"",$WS[0] & " "& $WS[1])

WinActivate("Untitled -- Message")

MouseMove($WS[0],$WS[1]+20,0)

MouseDown("Left")

MouseMove(850,510,0)

MouseUp("Left")

EndIf

;================================================================

MouseMove(75,90,0)

Sleep(1000)

Send("pwpi-reports@housemaster.us.com{tab}Cece.Johnston@housemaster.us.com")

Send("{tab}{tab}{end}")

MouseMove(50,210,0)

;For $I = 1 to $FileList[0]

MouseClick("left")

WinWaitActive("Attachments")

While StringInStr(WinGetClassList("Attachments"),"ComboBox")< 1

;WinActivate("Attachments")

WEnd

MouseMove(100,120,10)

;make 10 to slow mouse move so that text box is ready, 0 no work

Sleep(2000)

MouseClick("Left")

Send(EnvGet("USERPROFILE")&"\My Documents\My Pictures\Toolbox\"&$DT&"\"&$FileList[$I])

;ready to attach files

MouseMove(450,166,0)

MouseClick("Left")

MouseMove(450,330,0)

While WinExists("Attachments")

MouseClick("Left")

Sleep(1000)

WEnd

;now put in subject line

$A=StringReplace($FileList[$I]& " / ",".pdf","")

MouseMove(150,225,0)

MouseClick("Left")

Send($A)

MouseMove(30,75,0)

MouseClick("Left")

WinWaitClose("Untitled -- Message")

Sleep(500)

WinActivate("Microsoft Outlook Web Access")

Next

Exit

;====================================================================================================

Here is a GUI window that I created:

#include <GUIConstantsEx.au3>

#include <Date.au3>

GUICreate("HouseMaster Automation 2", 250, 400)

;GUICtrlCreateLabel("Hello world! How are you?", 30, 10)

$StopOlympus = GUICtrlCreateButton("Stop Olympus", 70, 50, 100)

$SendCheckList = GUICtrlCreateButton("Send Checklists", 70, 80, 100)

GUISetState(@SW_SHOW)

While 1

$msg = GUIGetMsg()

Select

Case $msg = $StopOlympus

StopOlympus() ;this one works

Case $msg = $SendCheckList

Checklist()

Case $msg = $GUI_EVENT_CLOSE

ExitLoop

EndSelect

WEnd

;===============Stop Olympus Camera====================================

Func StopOlympus()

Opt("wintitlematchmode",2)

If WinExists("Drag And File Gold") Then

WinWaitClose("Drag And File Gold")

EndIf

RunWait("C:\Program Files\USB Safely Remove\usr.exe stop -n olympus")

;MsgBox(0,"","OK to remove")

Run("C:\Program Files\Drag And File Gold\df32.exe")

EndFunc

;==================E-Mail Checklist/s======================================

Func Checklist()

;If I add the code here, I get "Syntax error "Func"

EndFunc

Thanks

Share this post


Link to post
Share on other sites

Its the #include statements.

It looks like they have to be at the top of the code. Not within a function.

Thanks for the help.

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

I reworked the order of the code abit and the gui control buttons react as expected.

Does this help?

;Here is the code that works by itself as a standalone script:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=C:\HouseMaster\Programs\SendDocs.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Date.au3>
#include <File.au3>
#include <Array.au3>
#include <GUIConstantsEx.au3>

;Here is a GUI window that I created:

GUICreate("HouseMaster Automation 2", 250, 400)
;GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$StopOlympus = GUICtrlCreateButton("Stop Olympus", 70, 50, 100)
$SendCheckList = GUICtrlCreateButton("Send Checklists", 70, 80, 100)
$openoutlook = GUICtrlCreateButton("Open Outlook", 70, 110, 100)
$menufile = GUICtrlCreateMenu("&File")
$fileexit = GUICtrlCreateMenuItem("Exit", $menufile)
GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()

    Select
    Case $msg = $StopOlympus
        StopOlympus() ;this one works 
    Case $msg = $SendCheckList
        Checklist()
    case $msg = $openoutlook
        openoutlook()
    Case $msg = $GUI_EVENT_CLOSE or $msg = $fileexit
        ExitLoop
    EndSelect
WEnd
;Exit

func openoutlook()
    dim $DT ;datedim $FC ;File Count
    Dim $FL[10] ;file list
    ;Dim $CompName=EnvGet("computername")
    $DT=stringreplace(_nowcalcdate(),"/","-")
    ;$FC=DirGetSize("C:\Documents and Settings\Mike\My Documents\My Pictures\Toolbox\"&$DT,1)

    ;==========================================================================================
    ;new code, get file names and number of files in folder.
    $FileList = _FileListToArray(EnvGet("USERPROFILE")&"\My Documents\My Pictures\Toolbox\"&$DT, "*.pdf", 1)
    Opt("MouseCoordMode", 0)

    ;=========================================================================
    ;Goto Outlook
    If Not WinActivate("Microsoft Outlook Web Access") Then
        MsgBox(0,'',"Cant find outlook")
        Exit
    EndIf

    For $I = 1 to $FileList[0]
        MouseMove(300,210,0)
        MouseClick("left")
        ;New message
        WinWait("Untitled -- Message")
        ;===========================================================
        ;size the window properly
        $WS=WinGetClientSize("Untitled -- Message")
        If $WS[0] < 710 or $WS[1] < 420 Then
        ;MsgBox(0,"",$WS[0] & " "& $WS[1])
        WinActivate("Untitled -- Message")
        MouseMove($WS[0],$WS[1]+20,0)
        MouseDown("Left")
        MouseMove(850,510,0)
        MouseUp("Left")
        EndIf
        ;================================================================
        MouseMove(75,90,0)
        Sleep(1000)
        Send("pwpi-reports@housemaster.us.com{tab}Cece.Johnston@housemaster.us.com")
        Send("{tab}{tab}{end}")

        MouseMove(50,210,0)
        ;For $I = 1 to $FileList[0]
        MouseClick("left")
        WinWaitActive("Attachments")
        While StringInStr(WinGetClassList("Attachments"),"ComboBox")< 1
        ;WinActivate("Attachments")
        WEnd
        MouseMove(100,120,10)
        ;make 10 to slow mouse move so that text box is ready, 0 no work
        Sleep(2000)
        MouseClick("Left")
        Send(EnvGet("USERPROFILE")&"\My Documents\My Pictures\Toolbox\"&$DT&"\"&$FileList[$I])

        ;ready to attach files

        MouseMove(450,166,0)
        MouseClick("Left")

        MouseMove(450,330,0)

        While WinExists("Attachments")
        MouseClick("Left")
        Sleep(1000)
        WEnd

        ;now put in subject line
        $A=StringReplace($FileList[$I]& " / ",".pdf","")
        MouseMove(150,225,0)
        MouseClick("Left")
        Send($A)
        MouseMove(30,75,0)
        MouseClick("Left")

        WinWaitClose("Untitled -- Message")

        Sleep(500)
        WinActivate("Microsoft Outlook Web Access")
    Next
    Exit
    ;====================================================================================================
EndFunc; end openoutlook()

;===============Stop Olympus Camera====================================
Func StopOlympus()
    Opt("wintitlematchmode",2)
    If WinExists("Drag And File Gold") Then
    WinWaitClose("Drag And File Gold")
    EndIf
    RunWait("C:\Program Files\USB Safely Remove\usr.exe stop -n olympus")
    ;MsgBox(0,"","OK to remove")

    Run("C:\Program Files\Drag And File Gold\df32.exe")
EndFunc; end StopOlympus()
;==================E-Mail Checklist/s======================================
Func Checklist()
    for $i=0 to 100
        beep(2000+$i, 10)
    next
    MsgBox(0, "Success", "Checklist button" & @crlf & "was clicked")
    ;exit
EndFunc; end Checklist()
Edited by songersoft

I am not a lawyer.  (-_-) Xandy About  (^o^) Discord - Xandy Programmer

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