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

    • 0Ethan0
      By 0Ethan0
      Ahoy Autoit Community!
      After many trials and errors I am unable to solve a problem I am facing and would appreciate any kind of input or better yet a solution 
      The Premise: An embeded slideshow viewer that runs after double-clicking an item in a ListView (each item will generate a different slideshow images).
      The Setup: GUI with a ListView Control and a simple exit button.
      The Issue: Once double clicked the slide plays however the GUI "locks"/non responsive until the slide is over. Same thing if I click on the "Test" button.
      The Culprit: I believe since it's in the images loop it can't accept any other commands until that loop is over.
      The Wish: I want to be able to use the GUI functions (selecting other items, clicking on button etc.) while the slideshow plays.
      The Code (stripped and simplified as much as I could):
      #include <GuiListView.au3> #include <File.au3> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) HotKeySet("{Esc}", "_Exit") Global $c=0 Global $ssGDI[3], $ssGraphic[2], $ssImage Global Const $bg_color = "000000" Global Const $ssW = 480, $ssH = 320 Global $aFiles = _FileListToArrayRec("d:\testStage\", "*.jpg;*.png;*.bmp;*.gif;*.JPG;*.PNG;*.BMP;*.GIF", $FLTAR_FILES, $FLTAR_NORECUR ,$FLTAR_SORT ,$FLTAR_FULLPATH ) $guiW = 1200 $guiH = 726 $mainWindow = GUICreate("Slideshow Viewer", $guiW, $guiH, -1, -1, $WS_POPUP) $Button1 = GUICtrlCreateButton("Exit", 0, 0, 50, 50) GUICtrlSetOnEvent($Button1, "_Exit") $Button1 = GUICtrlCreateButton("Test", 60, 0, 50, 50) GUICtrlSetOnEvent($Button1, "Test") Global $ListView = GUICtrlCreateListView("Entry Name|Category", 5, 75, 195, 280) _GUICtrlListView_SetColumnWidth ($ListView, 0, 100) _GUICtrlListView_SetColumnWidth ($ListView, 1, 100) GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES) GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT) GUICtrlCreateListViewItem("Name 1|Category 1", $ListView) GUICtrlCreateListViewItem("Name 2|Category 2", $ListView) screenshotWidgetInit($ssW,$ssH, 690, 100) GUISetState(@SW_SHOW, $mainWindow) GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE _Exit() EndSwitch WEnd Func Test() For $k = 1 To UBound($aFiles) - 1 screenshotWidgetTransition($aFiles[$k]) Next EndFunc Func ListView_Click() ConsoleWrite("Left Click") EndFunc Func ListView_DoubleClick() ConsoleWrite("Double Left Click") Test() EndFunc Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGUI, $MsgID, $wParam Local $tagNMHDR, $event, $hwndFrom, $code $tagNMHDR = DllStructCreate("int;int;int", $lParam) If @error Then Return $event = DllStructGetData($tagNMHDR, 3) Select Case $wParam = $ListView Select Case $event = $NM_CLICK ListView_Click () Case $event = $NM_DBLCLK ListView_DoubleClick () EndSelect EndSelect Return $GUI_RUNDEFMSG EndFunc Func screenshotWidgetTransition($image, $delay = 0, $speed = 1, $sleep = 2000) Local $a, $d = $c, $iX, $iY $ssImage = _GDIPlus_ImageLoadFromFile($image) $iX = _GDIPlus_ImageGetWidth($ssImage) $iY = _GDIPlus_ImageGetHeight($ssImage) $FDesktop=$ssH/$ssW $Fact =1 If $iX > $ssW And $FDesktop > ($iY/$iX) Then $Fact=$ssW/$iX ElseIf $iY > $ssH Then $Fact=$ssH/$iY EndIf $H1 = Round(($Fact * $iY),0) $W1 = Round(($Fact * $iX),0) _GDIPlus_GraphicsDrawImageRect($ssGraphic[$d], $ssImage,($ssW - $W1)/2, ($ssH - $H1) / 2,$W1,$H1) WinSetTrans($ssGDI[$d], "", 0) WinSetOnTop($ssGDI[$d], "", 1) For $a = 0 To 254 Step $speed WinSetTrans($ssGDI[$d], "", $a) Sleep($delay) Next WinSetTrans($ssGDI[$d], "", 254) WinSetOnTop($ssGDI[Not ($d)], "", 0) WinSetTrans($ssGDI[Not ($d)], "", 0) _GDIPlus_GraphicsClear($ssGraphic[Not ($d)]) $c = 1 - $d _GDIPlus_ImageDispose ($ssImage) ; very important to realease the pics Sleep($sleep) EndFunc ;==>screenshotWidgetTransition Func screenshotWidgetInit($ssW,$ssH,$ssX,$ssY) $ssGDI[2] = GUICreate("", $ssW, $ssH, $ssX, $ssY, $WS_POPUP, $WS_EX_MDICHILD, $mainWindow) $ssGDI[0] = GUICreate("", $ssW, $ssH, 3, 3, $WS_POPUP, $WS_EX_MDICHILD, $ssGDI[2]) $ssGDI[1] = GUICreate("", $ssW, $ssH, 3, 3, $WS_POPUP, $WS_EX_MDICHILD, $ssGDI[2]) ; GUISetBkColor("0x" & $bg_color, $ssGDI[2]) GUISetState(@SW_SHOW, $ssGDI[2]) GUISetState(@SW_SHOW, $ssGDI[0]) GUISetState(@SW_SHOW, $ssGDI[1]) WinSetTrans($ssGDI[0], "", 0) WinSetTrans($ssGDI[1], "", 0) _GDIPlus_Startup() $ssGraphic[0] = _GDIPlus_GraphicsCreateFromHWND($ssGDI[0]) $ssGraphic[1] = _GDIPlus_GraphicsCreateFromHWND($ssGDI[1]) _GDIPlus_GraphicsClear($ssGraphic[0], "0xFF" & $bg_color) _GDIPlus_GraphicsClear($ssGraphic[1], "0xFF" & $bg_color) EndFunc ;==>screenshotWidgetInit Func _Exit() _GDIPlus_ImageDispose($ssImage) _GDIPlus_GraphicsDispose($ssGraphic[0]) _GDIPlus_GraphicsDispose($ssGraphic[1]) GUIDelete($ssGDI[0]) GUIDelete($ssGDI[1]) GUIDelete($ssGDI[2]) _GDIPlus_Shutdown() Exit EndFunc ;==>_Exit I hope someone can shed light on this; perhaps a different approach is needed?
      Thank you in advance!
      P.S.
      The script is patched from different scripts of different users in the forum - thank you again users!
    • Skeletor
      By Skeletor
      MS Splash Screens
      The office 2016/17 office suite has made many people turn heads with its functions and especially their splash screen.
      I now present to you, the MS Style Splash Screen. For Rookies, Novices and anyone who wants a ready made splash screen for your gui application.

      You can now download it and also try it out yourself.
      You have three colors to choose from:
      Blue
      Red
      Green
      All three colours are from the famous programs.
      I also included the KODA form to you can have freedom with this splash screen.
      Note: the KODA form does not have the three colours as well as the correct blue. 

      Have fun and enjoy.
      Note:
      I will update the splash to add the automated 3 dots animation at a later stage. 
       
       
    • Skeletor
      By Skeletor
      A gui splash screen. Themed after the famous MS Office Suite.
      Three colours to choose from, Red, Blue and Green.
      You can change the labels to your own application.

      Also bundled with this is the KODA form. So you can open up and see the basic structure of this splash screen.
       
      Splash Screen GUI.zip
    • BlazerV60
      By BlazerV60
      Hello all,
      I've been trying to figure out how to launch Google Chrome in the background (hidden) but it doesn't seem possible. I've tried the following methods:
      ShellExecute("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", "", "", "", @SW_HIDE) Also I've tried:
      ShellExecute(@ComSpec, "/c start chrome.exe","","",@SW_HIDE) Lastly I tried:
      RunWait('"'&@ProgramFilesDir&'\Google\Chrome\Application\chrome.exe" --silent-launch',@ScriptDir)  
      But all of them launch my chrome browser without hiding it. Does anyone know a workaround for this or if AutoIT just can't Chrome? 
      Bonus points if you know how to make it launch chrome hidden and make it go to https://www.autoitscript.com
       
      Thank you,
      Brian
    • SteveJM
      By SteveJM
      I have a working program currently driven largely through menu selections. I would like to add a toolbar where most of the tollbar button actions are basically the same as menu items, but quicker to access. I have been wading around in toolbar examples, MSDN pages etc, it's clearly going to be a bit of a slog to get everything right, including tooltips etc. I thought I would start with something simple to prove the principle.
      Using bits from the help file examples I have a small program that successfully displays a toolbar. However, what seemed like the most elegant way to deal with the button commands does not seem to work. My understanding was that a toolbar button fires a WM_COMMAND message, with the command Id set by the second parameter in the call to
      _GUICtrlToolbar_AddButton ( $hWnd, $iID, $iImage)
      so I though it would be a good idea to set this Id to the same value as my menu item Id; then it would run the same task which is what I wanted. This did not work. I am using message loop mode and would like to stick with this because some of my scripts run hardware at the same time as the gui; it is easier if I don't have to worry about code being interrupted with the hardware in an unknown state . So I added a handler for WM_COMMAND, with some cribbed display code to try and see why. The toolbar button defintely fired a WM_COMMAND message and the Id looked the same, so no explanation there.
      I guess the issue is with GUIGetMsg() which may be constructed to ignore all but a limited number of control handles, i.e. those made with the GuiCtrlCreate... commands; this is speculation.
      I would dearly love to find a tidy way to get around this. Having some controls handled in the message loop and some in a WM_COMMAND handler, performing the same task, feels ugly. I would be very grateful for further insight from someone experienced with handling a toolbar. Perhaps I should be trying to fire the menu item. I have attached a code snippet to try and illustrate the issue.
       
       
       
      ToolbarTrial.au3