Jump to content
Sign in to follow this  
iresolver

Stop GUICtrlRead from sending 0 input

Recommended Posts

Hi guys When I run this part of my script     If GUICtrlRead(Input1) = "" Then on_Close()      it closes that gui window but still sends 0

I want it to send nothing if the user don't type anything

anyone know how to fix this?

thanks

this is my full script       the   GUICtrlRead(input1) = "" Then on_Close()    is near the bottom of the script

#RequireAdmin
#include <IE.au3>
#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <AutoEmail.au3>


Opt("GUIOnEventMode", 1)
AutoItSetOption ( "TrayIconDebug", 1 )

Global $AutoEmail, $AutoReplace_GUI = 9999, $Gmail_Button, $Hotmail_Button, $AutoReplace_Button = 9999  ; Predeclare the variables with dummy values to prevent firing the Case statements
Global $Gmail1_Button, $Gmail2_Button, $Hotmail1_Button, $Hotmail2_Button, $Input1, $Input2, $Input3, $Input4
Global $Gmail, $Hotmail, $cCombo, $cCombo2
Global $sFilename = @ScriptFullPath
Global $DataFromUser

 GUI_AutoEmail()



 Func GUI_AutoEmail()

     $AutoEmail = GUICreate("Auto Email", 339, 125, @DesktopWidth, @DesktopHeight)
     $aTaskbar = WinGetPos("[CLASS:Shell_TrayWnd]", "")
     $aWin = WinGetPos($AutoEmail)
     WinMove($AutoEmail, "", @DesktopWidth - $aWin[2] - 4, @DesktopHeight - $aWin[3] - $aTaskbar[3] - 4)

     GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close")                                                                      ; Call a common GUI close function
     $Gmail_Button = GUICtrlCreateButton("Gmail", 64, 16, 49, 41, $BS_ICON)
     GUICtrlSetImage(-1, "C:\Program Files\AutoEmail\gmail_icon.ico", 1)

     $Hotmail_Button = GUICtrlCreateButton("Hotmail", 223, 16, 49, 41, $BS_ICON)
     GUICtrlSetImage(-1, "C:\Program Files\AutoEmail\MSMail_icon.ico", 1)
     Global $cCombo = GUICtrlCreateCombo("", 16, 72, 145, 25)
     GUICtrlSetData(-1, "YourAccount1@gmail.com|YourAccount2@gmail.com", "YourAccount1@gmail.com")

     $cCombo2 = GUICtrlCreateCombo("", 176, 72, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
     GUICtrlSetData(-1, "YourAccount1@hotmail.com|YourAccount2@hotmail.com", "YourAccount1@hotmail.com")

     Global $msg

     GUICtrlSetOnEvent(3, "On_Button")

     GUICtrlSetOnEvent(4, "On_Button")

     GUICtrlSetOnEvent(-1, "On_Button")                                                                                ; Call a common button function

     $AutoReplace_Button = GUICtrlCreateButton("Add Your Email", 10, 100, 80, 30)

     GUICtrlSetOnEvent(-1, "On_Button")                                                                                ; Call a common button function
     GUISetState()


EndFunc

Func On_Button()
     Switch @GUI_CTRLID                                                                                                   ; See which button sent the message

         Case $Gmail_Button
              Gmail()

         Case $Hotmail_Button
             Hotmail()

         Case $AutoReplace_Button
             GUICtrlSetState($AutoReplace_Button, $GUI_DISABLE)
             GUI_AutoReplace()


         Case $Gmail1_Button
             AddEmail1()


         Case $Gmail2_Button
             AddEmail2()

         Case $Hotmail1_Button
             AddEmail3()

         Case $Hotmail2_Button
             AddEmail4()
EndSwitch
EndFunc
;--------------------------------------- This is the Main App Read Combos ---------------------------------------------------------------------


While 1
Sleep(10)
     WEnd


Func Gmail()
$DataFromUser = GUICtrlRead($cCombo)
If $DataFromUser = "YourAccount1@gmail.com" Then
gmail_login1()
EndIf

$DataFromUser = GUICtrlRead($cCombo)
If $DataFromUser = "YourAccount2@gmail.com" Then
gmail_login2()

EndIf
EndFunc

Func Hotmail()
$DataFromUser = GUICtrlRead($cCombo2)
If $DataFromUser = "YourAccount1@hotmail.com" Then
hotmail_login1()
EndIf

$DataFromUser = GUICtrlRead($cCombo2)
If $DataFromUser = "YourAccount2@hotmail.com" Then
hotmail_login2()

EndIf
EndFunc

;----------------------------------------------------- This sends account info to web Browser & Logs in ------------------------------------------------------------
Func gmail_login1()
Sleep (60)

Global $oIE =_IECreate ("https://accounts.google.com/ServiceLogin?sacu=1&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fpc%3Dtopnav-about-en&hl=en&service=mail")

    local $username = _IEGetObjByName ($oIE, "Email")
    Local $password = _IEGetObjByName ($oIE, "Passwd")

    Local $Email_button = _IEGetObjByName ($oIE, "Email")
    Local $Signin_button = _IEGetObjByName ($oIE,"signIn")

    _IEFormElementSetValue ($username, "YourAccount1@gmail.com")      ;<=====   Here you put your Gmail Account Name
    _IEFormElementSetValue ($password, "Your Password")               ;<=====   Here you put your Gmail Account Password

    _IEAction ($Email_button, "click")
    _IEAction ($Signin_button, "click")

EndFunc


Func gmail_login2()
Sleep(60)

Global $oIE =_IECreate ("https://accounts.google.com/ServiceLogin?sacu=1&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fpc%3Dtopnav-about-en&hl=en&service=mail")

    local $username = _IEGetObjByName ($oIE, "Email")
    Local $password = _IEGetObjByName ($oIE, "Passwd")

    Local $Email_button = _IEGetObjByName ($oIE, "account-email")
    Local $Signin_button = _IEGetObjByName ($oIE,"signIn")

    _IEFormElementSetValue ($username, "YourAccount2@gmail.com")     ;<=====   Here you put your 2nd Gmail Account Name
    _IEFormElementSetValue ($password, "Your Password")              ;<=====   Here you put your 2nd Gmail Account Password

    _IEAction ($Email_button, "click")
    _IEAction ($Signin_button, "click")

EndFunc


Func hotmail_login1()
Sleep(60)

Global $oIE =_IECreate ("http://www.live.com")

    local $username = _IEGetObjByName ($oIE, "login")
    Local $password = _IEGetObjByName ($oIE, "passwd")
    Local $Signin_button = _IEGetObjByName ($oIE,"SI")

    _IEFormElementSetValue ($username, "YourAccount1@hotmail.com")    ;<=====   Here you put your Hotmail Account Name
    _IEFormElementSetValue ($password, "Your Password")               ;<=====   Here you put your Hotmail Account Password
    _IEAction ($Signin_button, "click")

EndFunc


Func hotmail_login2()
Sleep(60)

Global $oIE =_IECreate ("http://www.live.com")

    local $username = _IEGetObjByName ($oIE, "login")
    Local $password = _IEGetObjByName ($oIE, "passwd")
    Local $Signin_button = _IEGetObjByName ($oIE,"SI")

    _IEFormElementSetValue ($username, "YourAccount2@hotmail.com")    ;<=====   Here you put your Hotmail Account Name
    _IEFormElementSetValue ($password, "Your Password")               ;<=====   Here you put your Hotmail Account Password
    _IEAction ($Signin_button, "click")

EndFunc


Func On_Close()
     Switch @GUI_WINHANDLE                                                                                              ; See which GUI sent the CLOSE message
         Case $AutoEmail
             Exit                                                                                                       ; If it was this GUI - we exit <<<<<<<<<<<<<<<
        Case $AutoReplace_GUI
             GUIDelete($AutoReplace_GUI)                                                                                             ; If it was this GUI - we just delete the GUI <<<<<<<<<<<<<<<
             GUICtrlSetState($AutoReplace_Button, $GUI_ENABLE)
     EndSwitch
 EndFunc


Func GUI_AutoReplace()

     $AutoReplace_GUI = GUICreate("Auto Add Email", 474, 324, 969, 306)

     $Input1 = GUICtrlCreateInput("", 24, 32, 329, 21)
     $Gmail1_Button = GUICtrlCreateButton("Add Gmail", 360, 30, 89, 25)
     $Label_AddGmail1 = GUICtrlCreateLabel("Type Your Gmail Account1", 24, 8, 131, 17)

     $Input2 = GUICtrlCreateInput("", 24, 106, 329, 21)
     $Gmail2_Button = GUICtrlCreateButton("Add Gmail", 360, 104, 89, 25)
     $Label_AddGmail2 = GUICtrlCreateLabel("Type Your Gmail Account2", 24, 82, 131, 17)

     $Input3 = GUICtrlCreateInput("", 24, 183, 329, 21)
     $Hotmail1_Button = GUICtrlCreateButton("Add Hotmail", 360, 181, 89, 25)
     $Label1 = GUICtrlCreateLabel("Type Your Hotmail Account1", 21, 159, 140, 17)

     $Input4 = GUICtrlCreateInput("", 24, 257, 329, 21)
     $Hotmail2_Button = GUICtrlCreateButton("Add Hotmail", 360, 255, 89, 25)
     $Label2 = GUICtrlCreateLabel("Type Your Homail Account2", 21, 233, 137, 17)

     GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close")                                                                        ; Call a common GUI close function

     GUICtrlSetOnEvent(-1, "On_Button")                                                                                 ; Call a common button function

     GUICtrlSetOnEvent(9, "On_Button")

     GUICtrlSetOnEvent(12, "On_Button")

     GUICtrlSetOnEvent(15, "On_Button")

     GUICtrlSetOnEvent(18, "On_Button")

     GUICtrlSetOnEvent(3, "On_Button")

     GUICtrlSetOnEvent(4, "On_Button")

     GUISetState()

EndFunc


Func AddEmail1()
If GUICtrlRead($Input1) = "" Then On_Close()

$DataFromUser = GUICtrlRead($Input1)
_ReplaceStringInFile ($sFilename, $sFindg1, $DataFromUser)
;FileSaveDialog("Save File", @ScriptDir, "Au3 Files (*.au3)", 16)

EndFunc

Func AddEmail2()
If GUICtrlRead($Input2) = "" Then On_Close()

$DataFromUser = GUICtrlRead($Input2)
_ReplaceStringInFile ($sFilename, $sFindg2, $DataFromUser)
;FileSaveDialog("Save File", @ScriptDir, "Au3 Files (*.au3)", 16)
EndFunc

Func AddEmail3()
If GUICtrlRead($Input3) = "" Then On_Close()

$DataFromUser = GUICtrlRead($Input3)
_ReplaceStringInFile ($sFilename, $sFindh1, $DataFromUser)
;FileSaveDialog("Save File", @ScriptDir, "Au3 Files (*.au3)", 16)

EndFunc

Func AddEmail4()
If GUICtrlRead($Input4) = "" Then On_Close()

$DataFromUser = GUICtrlRead($Input4)
_ReplaceStringInFile ($sFilename, $sFindh2, $DataFromUser)
;FileSaveDialog("Save File", @ScriptDir, "Au3 Files (*.au3)", 16)

EndFunc
Edited by iresolver

Share this post


Link to post
Share on other sites

iresolver,

Reading a "blank" input control does NOT return "0" as demonstrated here...

#include <GUIConstantsEx.au3>

local $gui010 = guicreate('')
local $inp010 = guictrlcreateinput('',10,10,100,20)
guisetstate()

Local $aAc[1][2] = [["{ENTER}", $inp010]]
GUISetAccelerators($aAC,$gui010)

while 1
    switch guigetmsg()
        case $gui_event_close
            ConsoleWrite('Inp010 = [' & guictrlread($inp010) & ']' & @CRLF)
            Exit
        case $inp010
            ConsoleWrite('Inp010 = [' & guictrlread($inp010) & ']' & @CRLF)
    EndSwitch
WEnd

Trouble shooting your code is unnecessarily difficult because of:

1 - The code posted not being runnable

2 - The use of numbers in the guictrlsetonevent function

Why do you use a mix of var names and ctlid numbers anyway?

kylomas

edit: code correction

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites

it's not going to work if you don't have my custom #include <AutoEmail.au3>

sorry about that

the script does a find and replace & I couldn't have what's in the AutoEmail.au3 in the main script or it would change that too so I put it in a separate include file

if anyone knows a better way to do this without a separate include file i would love hear it!

the #include file looks like this

 
Local $sFindyg1 = "yourAccount1@gmail.com"
Local $sFindyg2 = "yourAccount2@gmail.com"
Local $sFindyh1 = "yourAccount1@hotmail.com"
Local $sFindyh2 = "yourAccount2@hotmail.com"
 
Local $sFindygp1 = "your gmail password1"
Local $sFindygp2 = "your gmail password2"
Local $sFindyhp1 = "your hotmail password1"
Local $sFindyhp2 = "your hotmail password2"

Share this post


Link to post
Share on other sites

iresolver,

Data like this

Local $sFindyg1 = "yourAccount1@gmail.com"

Local $sFindyg2 = "yourAccount2@gmail.com"

Local $sFindyh1 = "yourAccount1@hotmail.com"

Local $sFindyh2 = "yourAccount2@hotmail.com"

 

Local $sFindygp1 = "your gmail password1"

Local $sFindygp2 = "your gmail password2"

Local $sFindyhp1 = "your hotmail password1"

Local $sFindyhp2 = "your hotmail password2"

sometimes referred to as "external data" is better stored outside of the code itself.  This allows the code and data to be changed independently.  For simple data like this an INI file or simple flat file will do.

I still do not understand why you are referring to your controls by ID and not name.  And why not set the event immediately after creating the control and refer to it as "-1"?

kylomas

 


Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

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  

  • Similar Content

    • By DigiBox
      Hello!
      Please help me with this small problem I've encountered while learning to make GUI.
      I'm not able to get the set slider values out of sliders and I can't figure out why.
      The slider value in the example is preset to 1, but whatever I set the slider to, it returns the value 3 when I click Apply and I havn't set any value to 3.
      Where is that 3 coming from?
       
      #include <SliderConstants.au3> #include <MsgBoxConstants.au3> #include <GUIConstantsEx.au3> Global $LRSlider Opt("GUIOnEventMode", 1) Global $Form1 = GUICreate("test slider", 200, 200, -1, -1) Global $LRSlider = GUICtrlCreateSlider(50, 50, 100, 20, $TBS_TOOLTIPS) GUICtrlSetLimit($LRSlider, 50, 1) GUICtrlSetData($LRSlider, 1) GUISetOnEvent($GUI_EVENT_CLOSE, "Exit1") Global $ApplyButton = GUICtrlCreateButton("APPLY", 100, 150, 89, 17) GUICtrlSetOnEvent($ApplyButton, "Apply") GUISetState(@SW_SHOW) Func Apply() GUICtrlRead($LRSlider) MsgBox(0, 0, $LRSlider) GUICtrlSetData($LRSlider, $LRSlider) EndFunc ;==>Apply Func Exit1() Exit EndFunc ;==>Exit1 While 1 Sleep(200) WEnd  
    • By fopetesl
      One statement of GUICtrlRead() fails. Result is always "Long/Short" in written file.
      The other GUICtrlRead() calls work as expected
      Func GetScanSettings() ; Read User Input for scan Local $collectusername, $collectlot, $collectsample $UserFile = "Sample.dat" ; Global $UserFile = save this scan's parameters $datafile = FileOpen($UserFile) If( $datafile <> -1) Then $collectusername = FileReadLine($datafile, 1) EndIf FileClose($datafile) ; now open a new 'clean' file.. $datafile = FileOpen($UserFile,$FO_OVERWRITE ) ;Create GUI $Main = GUICreate('Enter Sample Detail', 500, 500) Opt("GUICoordMode",1) If( $collectusername <> "") Then $username = GUICtrlCreateInput($collectusername,100,20,100,20) Else $username = GUICtrlCreateInput('',100,20,100,20) EndIf $usernamelabel = GUICtrlCreateLabel('Username',30,22) $FileName = GUICtrlCreateInput("",100,45,100,0) $FileNamelabel = GUICtrlCreateLabel('File Name',30,47) $BatchNum = GUICtrlCreateInput("",100,65,100,0) $BatchNumlabel = GUICtrlCreateLabel('Lot',30,72) $SampleNum = GUICtrlCreateInput("",100,85,100,0) $SampleNumlabel = GUICtrlCreateLabel('Sample',30,97) $SampleLS = GUICtrlCreateInput("",100,105,100,0) $SampleNumLS = GUICtrlCreateLabel('Long/Short',30,117) $Button_1 = GUICtrlCreateButton ("OK", 190, 170, 0, 0, 0x0001) GUISetState (); Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() ; complete data entries Select Case $msg = $Button_1 $collectusername = GUICtrlRead($username) WinSetState('Collect Username','',@SW_HIDE) $collectfilename = GUICtrlRead($FileName) $collectlot = GUICtrlRead($BatchNum) $collectsample = GUICtrlRead($SampleNum) $collectLS = GUICtrlRead($SampleNumLS) ; Do ; $collectLS = GUICtrlRead($SampleNumLS) ; If $collectLS <> 'Long' And $collectLS <> 'Short' Then ; Soundplay("Windows XP Error.wav", 1) ; $collectLS = "" ; EndIf ; Until $collectLS = 'Long' Or $collectLS = 'Short' ExitLoop EndSelect Wend GUIDelete($Main) FileWrite($datafile,$collectusername & @CRLF & $collectfilename & @CRLF & $collectlot _ & @CRLF & $collectsample & @CRLF & 'Long' & @CRLF ) ; $collectLS & @CRLF) FileClose($datafile) EndFunc ;<=== GetScanSettings ================== I also tried to force user to enter either 'Short' or 'Long' but I got that wrong also
      The final FileWrite() edited so I do have a correct result.
      sample.dat
      Pete FilenamePete Num1 Samp2 Long/Short  
    • By 232showtime
      im getting strange output in array display,$split_[1] is not properly aligned to other arrays and why guictrlsetdata is not writting any data if i put comma(,) at the end of the text in $Input1???
       
      #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Array.au3> #Region ### START Koda GUI section ### Form=C:\Users\user\Desktop\Script\StringSplit.kxf $Form1 = GUICreate("Form1", 623, 449, 192, 114) $Input1 = GUICtrlCreateInput("50UGITQ421X, 50UGITQ422X, 50UGITQ423X, 50UGITQ427X, 50UGITQ431X, 50UGITQ435X, 50UGITQ436X, 50UGITQ437X, 50UGITQ441X, 50UGITQ445X, 50UGITQ449X, 50UGITQ453X, 50UGITQ454X, 50UGITQ455X, 50UGITQ459X", 24, 16, 553, 21) $Split = GUICtrlCreateButton("Split", 24, 48, 75, 25) $List1 = GUICtrlCreateList("", 24, 96, 553, 97) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Split $read = GUICtrlRead($Input1) $split_ = StringSplit($read, ",") $Max = UBound($split_, 1) For $i = 1 To UBound($split_) - 1 ConsoleWrite($split_[$i] & @CRLF) ;~ ControlSetText($Form1, "", $List1, $split_[$i]) GUICtrlSetData($List1, $split_[$i]) ;~ GUICtrlSetData($List1, $split_[$i]) ;~ GUICtrlSetData($List1, $i) Next _ArrayDisplay($split_) EndSwitch WEnd  
    • By 232showtime
      Hello World!!!, please I need help I wanted to read the GUICreateInput, I don't know whats wrong with my script.
       
      #include <GUIConstantsEx.au3> #include <GUIListView.au3> #include <GUIListViewEx.au3> GUICreate("My GUI", 300, 100) GUISetState(@SW_SHOW) Local $sInput = GUICtrlCreateInput("", 150, 50, 50, 20) Local $sRead = GUICtrlRead($sInput,0) Local $sAdd = GUICtrlCreateButton("Read", 80, 50, 50, 20) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $iAdd MsgBox(0, "Input!!!", $sRead) EndSwitch WEnd  
    • By Skysnake
      Hi
      Wiki has this entry: https://www.autoitscript.com/wiki/Label, which differs from the actual Help file.
      I can not READ the value of a LABEL.  Code
      GuiCtrlRead($myLabel)  returns "False". Help appreciated.
×
×
  • Create New...