FMS

Saving GUI info external

4 posts in this topic

Dear reader,

 

At the moment I'm trying to make a script that is changeble by the users.
It is a script that type's words for you whish u can change what it should be.
I was thinking that the users may change the button settings in the second tab whit a pull down menu.
 

At this point the text that must be typed in are hard coded in the program.
I know that I must "save" the text in a diffrent file but i don't now how.
Also mine search on the net or forum wasn't fruitfull.(maybe i was looking wrong;))

Could somebody push me in the right direction?
(I'm still al little bit new at this so any help or info is appreciated)

 

thanks in advanced.

 

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 318, 228, 192, 124)

$Tab1 = GUICtrlCreateTab(8, 32, 289, 177)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Btn001 = GUICtrlCreateButton("Button1", 25, 68, 75, 25)
$Btn002 = GUICtrlCreateButton("Button2", 110, 68, 75, 25)
$Btn003 = GUICtrlCreateButton("Button3", 196, 68, 75, 25)
$Btn004 = GUICtrlCreateButton("Button4", 25, 100, 75, 25)
$Btn005 = GUICtrlCreateButton("Button5", 110, 100, 75, 25)
$Btn006 = GUICtrlCreateButton("Button6", 196, 100, 75, 25)
$Btn007 = GUICtrlCreateButton("Button7", 25, 132, 75, 25)
$Btn008 = GUICtrlCreateButton("Button8", 110, 132, 75, 25)
$Btn009 = GUICtrlCreateButton("Button9", 196, 132, 75, 25)
$Btn010 = GUICtrlCreateButton("Button10", 25, 164, 75, 25)
$Btn011 = GUICtrlCreateButton("Button11", 110, 164, 75, 25)
$Btn012 = GUICtrlCreateButton("Button12", 196, 164, 75, 25)

$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$Combo1 = GUICtrlCreateCombo("", 144, 72, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, " 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12")
$Btn013 = GUICtrlCreateButton("Button13", 40, 168, 75, 25)
$Btn014 = GUICtrlCreateButton("Button14", 152, 168, 75, 25)

GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
         Case $Btn001
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 1 is pushed")
         Case $Btn002
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 2 is pushed")
         Case $Btn003
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 3 is pushed")
         Case $Btn004
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 4 is pushed")
         Case $Btn005
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 5 is pushed")
         Case $Btn006
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 6 is pushed")
         Case $Btn007
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 7 is pushed")
         Case $Btn008
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 8 is pushed")
         Case $Btn009
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 9 is pushed")
         Case $Btn010
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 10 is pushed")
         Case $Btn011
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 11 is pushed")
         Case $Btn012
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 12 is pushed")
         Case $Btn013
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 13 is pushed")
         Case $Btn014
            send("{ALTDOWN}{TAB}{ALTUP}")
            Sleep(1000)
            Send ("Button 14 is pushed")
    EndSwitch
WEnd

 


as finishing touch god created the dutch

Share this post


Link to post
Share on other sites



You can use IniWrite and IniRead, but there a many other solutions possible. 

Share this post


Link to post
Share on other sites

Not sure why you are sending your ALT and TAB commands, but you could reduce your code by using a function.

Global $altab

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
         Case $Btn001
            SendAltTabCommands(1)
         Case $Btn002
            SendAltTabCommands(2)
         Case $Btn003
            SendAltTabCommands(3)
         Case $Btn004
            SendAltTabCommands(4)
         Case $Btn005
            SendAltTabCommands(5)
         Case $Btn006
            SendAltTabCommands(6)
         Case $Btn007
            SendAltTabCommands(7)
         Case $Btn008
            SendAltTabCommands(8)
         Case $Btn009
            SendAltTabCommands(9)
         Case $Btn010
            SendAltTabCommands(10)
         Case $Btn011
            SendAltTabCommands(11)
         Case $Btn012
            SendAltTabCommands(12)
         Case $Btn013
            SendAltTabCommands(13)
         Case $Btn014
            SendAltTabCommands(14)
    EndSwitch
WEnd

Func SendAltTabCommands($altab)
    send("{ALTDOWN}{TAB}{ALTUP}")
    Sleep(1000)
    Send ("Button " & $altab & " is pushed")
EndFunc

 


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites

thanks autobert and the saint...
This was totaly what i needed..
I was searching in the wrong direction :(


as finishing touch god created the dutch

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

    • XaelloNegative
      By XaelloNegative
      Hi,
      I made a small blunder with my code. I created the GUI under 1920x1080 resolution however, my user is configured to ONLY 1080x720 and cannot go any further than that.
      What do you guys think is the best way to correct this one? Resolution mathematics is something that came to mind however I do not have access to his PC to check  from time to time if  my estimation is correct and the resolution on my PC doesn't go down to 1080x720.
      Please help.
      ~XN~
    • davidacrozier
      By davidacrozier
      Hello all ~
      I am running an autoit script on Windows 10 inside VMware Workstation 12 Pro version 12.5.2.  Technically I am remoting into ESXi which has a Domain Controller (DC), WebServer, FilServer, Windows 10, etc.  Using the GUI (i.e. running explorer.exe) I am able to open several different folders successfully.  The desktop, documents, USB external all open without issue.  The network share opening gives me issues.  Whenever I attempt to open \\filserver\users\user\sharedfolder I get the documents folder instead.  I understand that the documents folder is the default for explorer.  I have also attempted to use the letter drive mapped to the network share (Z:) and receive the same result.  When I run this script on Windows 10 alone without  the VM or the ESXi I am able to open the network share without problems.  I have tried to use the net use command to designate a letter M: to the network share folder prior to running the script.  This did not work for me.  
      One additional avenue I think might work is to use the systreeview321 and _GUICtrlTreeView_FindItem to step through the tree looking for the network share.  Once found,  double click on it and see if that opens the shared network folder.  I can click inside the VM with my mouse on the network share and it opens just fine.  Not sure if running up against GUI issues, or permission issues, or what?
      Thanks in advance,
      Davida Crozier
      TestNetworkShare.au3
      This script is a subset of a much larger program, but it illustrates what I am dealing with.

    • superflq
      By superflq
      Hi everyone,
      GUICtrlSetState Function example ,i found $GUI_DROPACCEPTED isn't working in windows10 x64(windows_10_enterprise_2016_ltsb_x64).
      if the example put to windows10 x86 or windows xp, the $GUI_DROPACCEPTED is effective,
      the AutoIt Edition is v3.3.14.2.
      any ideas? thanks you.
       
      #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Example() Func Example() ; Create a GUI with various controls. Local $hGUI = GUICreate("Example", 420, 200, -1, -1, -1, $WS_EX_ACCEPTFILES) ; Create a label and set the state as drop accepted. Local $idLabel = GUICtrlCreateLabel("Drop a file on this label.", 10, 10, 400, 40, $WS_BORDER) GUICtrlSetState($idLabel, $GUI_DROPACCEPTED) ; Create an input and set the state as drop accepted. Local $idInput = GUICtrlCreateInput("", 10, 60, 400, 22) GUICtrlSetState($idInput, $GUI_DROPACCEPTED) Local $idOK = GUICtrlCreateButton("OK", 310, 170, 85, 25) ; Display the GUI. GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $idOK ExitLoop Case $GUI_EVENT_DROPPED ; If the value of @GUI_DropId is $idLabel, then set the label of the dragged file. If @GUI_DropId = $idLabel Then GUICtrlSetData($idLabel, @GUI_DragFile) EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc ;==>Example  
    • MrCheese
      By MrCheese
      Hey Guys,
       
      So, the functions work, where primarygui() accurately determines the evaluation of the status of the checkboxes - the msgbox picks this up.
       
      However, later on, when we re-enter a 'for $i = 0 to ubound($checkbox)' loop, then in the 'batchinitial' function it doesn't picked up that the status&$i = 1, so it jumps out, then within the While 1 loop, it exits the loop in the first row, again because the status& $i= 0
      The "assign" line within the primarygui funtion, is this only a local assignment? if so, how can I make it cross function?
       
      Thank in adv for your help
       
       
      Func excelsheetlist() $i = 0 Global $aWorkSheets = _Excel_SheetList($oWorkbook1) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_SheetList Example 1", "Error listing Worksheets." & @CRLF & "@error = " & @error & ", @extended = " & @extended) ;_ArrayDisplay($aWorkSheets, "Excel UDF: _Excel_SheetList Example 1") ;_ArrayDisplay($aWorkSheets, "Array") Global $iRows = UBound($aWorkSheets, $UBOUND_ROWS) ; Total number of rows. In this example it will be 10. Global $iCols = UBound($aWorkSheets, $UBOUND_COLUMNS) ; Total number of columns. In this example it will be 20. Global $iDimension = UBound($aWorkSheets, $UBOUND_DIMENSIONS) ; The dimension of the array e.g. 1/2/3 dimensional. MsgBox($MB_SYSTEMMODAL, "", "The array is a " & $iDimension & " dimensional array with " & _ $iRows & " row(s) & " & $iCols & " column(s).") Dim $checkbox[$iRows] EndFunc ;==>excelsheetlist Func primarygui() ; Create a GUI with various controls. Local $hGUI = GUICreate("Script Controller", 300, ($iRows * 24)) ; Create a checkbox control. ;Local $idCheckbox = GUICtrlCreateCheckbox("Standard Checkbox", 10, 10, 185, 25) Local $Button2 = GUICtrlCreateButton("Close", 210, 200, 85, 25) Local $Button3 = GUICtrlCreateButton("Run", 210, 170, 85, 25) Local $Button1 = GUICtrlCreateButton("Discharge", 210, 140, 85, 25) For $i = 0 To UBound($checkbox) - 1 $checkbox[$i] = GUICtrlCreateCheckbox($aWorkSheets[$i][0], 8, 0 + ($i * 24)) ;, 81, 17) Next ; Display the GUI. GUISetState(@SW_SHOW, $hGUI) ; Loop until the user exits. While 1 $nMsg = GUIGetMsg() Select Case $nMsg = $GUI_EVENT_CLOSE Exit Case $nMsg = $Button2 ;Close Exit Case $nMsg = $Button1 MsgBox(0, "Discharge Button not configured", "Now Exiting") Exit Case $nMsg = $Button3 ;Run $fSelection = False For $i = 0 To UBound($checkbox) - 1 If BitAND(GUICtrlRead($checkbox[$i]), $GUI_CHECKED) Then $fSelection = True ExitLoop EndIf Next If $fSelection Then For $i = 0 To UBound($checkbox) - 1 Assign("status" & $i, GUICtrlRead($checkbox[$i])) Next $batchcount = 0 For $i = 0 To UBound($checkbox) - 1 If Eval("status" & $i) = 1 Then $batchcount = $batchcount + 1 ;Call ("o" & $i & "copy") ; if you want to call the functions directly, remove ; before the call and comment or delete the following DirCopy statement MsgBox(0, "Checking", "Checking that: " & $checkbox[$i] & " no, with title: " & $aWorkSheets[$i][0] & " was selected, Batch count: " & $batchcount) ; if you need only the DirCopy EndIf Next ExitLoop Else MsgBox(48, 'No Items Selected', 'You have not selected any Patients to Load, Please select from the list') EndIf EndSelect WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc ;==>primarygui Func _IsChecked($idControlID) Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED EndFunc ;==>_IsChecked Func batchinitial() If Eval("status" & $i) = 1 Then debugbox() $oWorkbook1.Sheets(1).Activate $bigloop = $bigloop + 1 $sheet = $aWorkSheets[$i][0] $oWorkbook1.Sheets($sheet).Activate debugbox() EndIf EndFunc ;==>batchinitial OpenExcel() excelsheetlist() primarygui() For $i = 0 To UBound($checkbox) - 1 batchinitial() While 1 If Eval("status" & $i) = 0 Then ExitLoop ;all the rest of my script loops etc WEnd Next  
    • hcI
      By hcI
      Hello everyone !
      While writing a sample of code to test ping to my internet box, I got stuck..
      While the code is Pinging with let say.. 5000ms of timeout, I need to update a progress bar from 0 to 5000 ms at the same time but I don't know how could I do this..
      Is there a way or something that could get around the pause of the ping like in InetGet -> InetGetInfo?