Sign in to follow this  
Followers 0
MattHiggs

(solved)First time trying to create custom tray icon menus

13 posts in this topic

#1 ·  Posted (edited)

Like stated above, I have never really attempted to create tray icon menus simply due to the fact I find them annoying (if I want to minimize a program, I will click "minimize", but if I want to close it, I don't want it to minimize to task bar and require me to close it there), but thought I should try incorporating them into latest script to at least say that I can use them.  However, I am running into a couple of snags/facts I would like to verify.  1) Since tray icons come with their own "GetMsg" function, I just want to verify that, while the continual paging of the tray menu item would still occur within some kind of loop, can the tray menu item events be declared outside and separate from the GUI events?  eg.

While 1
    $tmsg = TrayGetMsg ()
    $nMsg = GUIGetMsg(1)
    Switch $tmsg
        Case $TrayMenu
        Case $settings1
            If TrayItemGetState ( $settings1 ) = 65 Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "No Notifications", "$TRAY_CHECKED" )
            ElseIf TrayItemGetState ( $settings1 ) = 68 Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "No Notifications", "$TRAY_UNCHECKED" )
            Else
            EndIf

        Case $settings2

            If TrayItemGetState ( $settings2 ) = 65 Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", "$TRAY_CHECKED" )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), $WS_EX_TOPMOST, $Form1_1 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $DS_SETFOREGROUND), $WS_EX_TOPMOST, $Form2 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form3 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), BitOR($WS_EX_OVERLAPPEDWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $Form3_1 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form4 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form5 )
            ElseIf TrayItemGetState ( $settings2 ) = 68 Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", "$TRAY_UNCHECKED" )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), 0, $Form1_1 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form2 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form3 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), BitOR($WS_EX_OVERLAPPEDWINDOW, $WS_EX_WINDOWEDGE), $Form3_1 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form4 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form5 )
            Else
            EndIf

    EndSwitch

    Switch $nMsg[1]
        Case $Form1_1
            Switch $nMsg[0]
                Case $GUI_EVENT_CLOSE
                    ;ProcessClose ( "pastebutt.exe" )
                    ;ProcessClose ( "PasteButtonhk.exe" )
                    Exit
                EndSwitch
          EndSwitch
     Wend

My second question also involves the above code, but specifically the "Ini" functions which attempt to read a "tray" state flag from an Ini file.  The following is code located at very beginning of script:

Const $path = @AppDataDir & "\filler"
Opt ( "TrayMenuMode", 1 )
OnAutoItExitRegister ( "refresh" )
$nonote = False
$TrayMenu = TrayCreateMenu ( "Settings" )
$settings1 = TrayCreateItem ( "Turn off notifications", $TrayMenu )
TrayItemSetState ( -1, IniRead ( $path & "\infostore.ini", "Tray Settings", "No Notifications", "$TRAY_UNCHECKED" ) )
$settings2 = TrayCreateItem ( "Keep Window on top", $TrayMenu )
TrayItemSetState ( -1, IniRead ( $path & "\infostore.ini", "Tray Settings", "On top", "$TRAY_UNCHECKED" ) )

So the idea is that whenever the user "checks" one of the tray icon menu options, its current "state" will be input into the "ini" file, so that the state of the particular tray menu item will be in the same state as the user left it when the script is launched next.  However, this is not occurring: the ini file contains the "state" flag like it should, but the tray menu item remains unchecked at startup.  Furthermore, the checking or unchecking of "setting1" is not being recognized, as the windows' extended styles do not obtain the "Topmost" flag like they should had it worked.  I get the feeling I'm not getting the "states" of the tray menu items correct.  Any advice?

ini.png

Edited by MattHiggs

Share this post


Link to post
Share on other sites



  1. It should be only one loop but 2 switch...endswitch regions in this loop are ok.
  2. the value for OnTop isn't correct. OnTop=4  is correct. You used the IniWrite false, it must be:
    IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED) )

    or:

    IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", 4) )

    Also the IniRead should be:

    TrayItemSetState ( -1, Int(IniRead ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED ) ))

     

 

Share this post


Link to post
Share on other sites

OHH.  Ok.  I was under the impression that the only values that any of the INI functions would accept where strings and would at a later point need to be converted to whatever the final variable it should be.  I will give it a shot.

Share this post


Link to post
Share on other sites
4 hours ago, AutoBert said:
  1. It should be only one loop but 2 switch...endswitch regions in this loop are ok.
  2. the value for OnTop isn't correct. OnTop=4  is correct. You used the IniWrite false, it must be:
    IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED) )

    or:

    IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", 4) )

    Also the IniRead should be:

    TrayItemSetState ( -1, Int(IniRead ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED ) ))

     

Yeah.  So this didn't work.  I altered the code as instructed:

Const $path = @AppDataDir & "\filler"
Opt ( "TrayMenuMode", 1 )
OnAutoItExitRegister ( "refresh" )
$nonote = False
$TrayMenu = TrayCreateMenu ( "Settings" )
$settings1 = TrayCreateItem ( "Turn off notifications", $TrayMenu )
TrayItemSetState ( -1, Int ( IniRead ( $path & "\infostore.ini", "Tray Settings", "No Notifications", $TRAY_UNCHECKED ) ) )
$settings2 = TrayCreateItem ( "Keep Window on top", $TrayMenu )
TrayItemSetState ( -1, Int (IniRead ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED ) ))

and

While 1
    $tmsg = TrayGetMsg ()
    $nMsg = GUIGetMsg(1)
    Switch $tmsg
        Case $TrayMenu
        Case $settings1
            If TrayItemGetState ( $settings1 ) = $TRAY_CHECKED Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "No Notifications", $TRAY_CHECKED )
            ElseIf TrayItemGetState ( $settings1 ) = $TRAY_UNCHECKED Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "No Notifications", $TRAY_UNCHECKED )
            Else
            EndIf

        Case $settings2

            If TrayItemGetState ( $settings2 ) = $TRAY_CHECKED Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_CHECKED )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), $WS_EX_TOPMOST, $Form1_1 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $DS_SETFOREGROUND), $WS_EX_TOPMOST, $Form2 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form3 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), BitOR($WS_EX_OVERLAPPEDWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $Form3_1 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form4 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form5 )
            ElseIf TrayItemGetState ( $settings2 ) = $TRAY_UNCHECKED Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), 0, $Form1_1 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form2 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form3 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), BitOR($WS_EX_OVERLAPPEDWINDOW, $WS_EX_WINDOWEDGE), $Form3_1 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form4 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form5 )
            Else
            EndIf

    EndSwitch

    Switch $nMsg[1]
        Case $Form1_1
            Switch $nMsg[0]
            EndSwitch
            EndSwitch
            Wend

 

The only difference is that now there is no data being saved to the INI file (attached).  Ini Files can only accept strings as forms of input and can only return strings, like I stated above, so I am going to change it back.  Anybody else have any suggestions?

ini.png

Share this post


Link to post
Share on other sites
4 hours ago, AutoBert said:
  1. It should be only one loop but 2 switch...endswitch regions in this loop are ok.
  2. the value for OnTop isn't correct. OnTop=4  is correct. You used the IniWrite false, it must be:
    IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED) )

    or:

    IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", 4) )

    Also the IniRead should be:

    TrayItemSetState ( -1, Int(IniRead ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED ) ))

     

As for where I got the 65 and 68 for the GetState values, I had a message box setup up to give the state of the tray menu item whenever TrayGetMsg received the handle, and it kept including the "enabled" (64) flag as well, which is why I tried that.

 

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

 

13 minutes ago, MattHiggs said:
4 hours ago, AutoBert said:

...

As for where I got the 65 and 68 for the GetState values, I had a message box setup up to give the state of the tray menu item whenever TrayGetMsg received the handle, and it kept including the "enabled" (64) flag as well, which is why I tried that.

I never said this, but StateValue 65=

  • $TRAY_CHECKED 1 Menuitem will be checked
  • + $TRAY_ENABLE 64 Menuitem will be enabled
if BitAND(TrayItemGetState,$settings1,$TRAY_CHECKED)=$TRAY_CHECKED Then IniWrite ( $path & "\infostore.ini", "Tray Settings", "No Notifications", $TRAY_CHECKED )

writes No Notifications=1 in INI.

Edited by AutoBert

Share this post


Link to post
Share on other sites
4 minutes ago, AutoBert said:

 

I never said this, but StateValue 65=

  • $TRAY_CHECKED 1 Menuitem will be checked
  • + $TRAY_ENABLE 64 Menuitem will be enabled

 

My bad.  I wrote that.  I don't even know how that happened.  But that is the process I took to try and find out the correct "state" of the tray menu item in order for the functions to start occurring.  I have tried both pairs (1 and 4) and (65 and 68) but neither seem to work.

Share this post


Link to post
Share on other sites

The code looks the exact same with one small addition:

While 1
    $tmsg = TrayGetMsg ()
    $nMsg = GUIGetMsg(1)
    Switch $tmsg
        Case $TrayMenu
        Case $settings1
            #Region --- CodeWizard generated code Start ---

;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=None
MsgBox($MB_OK,"State",TrayItemGetState ($settings1))
#EndRegion --- CodeWizard generated code End ---

            If TrayItemGetState ( $settings1 ) = $TRAY_CHECKED Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "No Notifications", $TRAY_CHECKED )
            ElseIf TrayItemGetState ( $settings1 ) = $TRAY_UNCHECKED Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "No Notifications", $TRAY_UNCHECKED )
            Else
            EndIf

        Case $settings2

            If TrayItemGetState ( $settings2 ) = $TRAY_CHECKED Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_CHECKED )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), $WS_EX_TOPMOST, $Form1_1 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $DS_SETFOREGROUND), $WS_EX_TOPMOST, $Form2 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form3 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), BitOR($WS_EX_OVERLAPPEDWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $Form3_1 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form4 )
                GUISetStyle ( -1, $WS_EX_TOPMOST, $Form5 )
            ElseIf TrayItemGetState ( $settings2 ) = $TRAY_UNCHECKED Then
                IniWrite ( $path & "\infostore.ini", "Tray Settings", "On top", $TRAY_UNCHECKED )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), 0, $Form1_1 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form2 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form3 )
                GUISetStyle ( BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), BitOR($WS_EX_OVERLAPPEDWINDOW, $WS_EX_WINDOWEDGE), $Form3_1 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form4 )
                GUISetStyle ( $GUI_SS_DEFAULT_GUI, 0, $Form5 )
            Else
            EndIf

    EndSwitch

When the msg box pops up with the state of the tray menu item, it always has the "enabled" flag added in

Share this post


Link to post
Share on other sites

There are other ways to go about this can accomplish the same thing.  I just wanted to know if it is possible to do it this way.

Share this post


Link to post
Share on other sites

Is the TrayItem enabled?

  • Yes then it's correct
  • No, post a runable reproducer instead of snippets

and next please edit your post's

Share this post


Link to post
Share on other sites

#11 ·  Posted (edited)

And just to confirm, enabled simply means that it is not greyed out and "clickable" yes??

Edited by MattHiggs

Share this post


Link to post
Share on other sites

#12 ·  Posted (edited)

Last try: this is not a chat, so edit your posts instead of creating a new one every 5 minutes.

Edit1: Here's a older project, just updated to restore the TrayItemsettings: numpad.au3

Restore is done in #78 to 84, save settings is done in 98,99,103,104.

So you see it's possible to store other variables then strings in INI-files, but you must convert it back.

 

Edit2: the tool simulates a numeric pad on keyboard, so use ^o to turn this feature off.

Edited by AutoBert

Share this post


Link to post
Share on other sites
43 minutes ago, AutoBert said:

 

I never said this, but StateValue 65=

  • $TRAY_CHECKED 1 Menuitem will be checked
  • + $TRAY_ENABLE 64 Menuitem will be enabled
if BitAND(TrayItemGetState,$settings1,$TRAY_CHECKED)=$TRAY_CHECKED Then IniWrite ( $path & "\infostore.ini", "Tray Settings", "No Notifications", $TRAY_CHECKED )

writes No Notifications=1 in INI.

This worked.  Thank you.

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

  • Similar Content

    • Jibberish
      By Jibberish
      Hi,
      I am automating the testing of a video player. I search a file for ".mp4" and want to create a GUI with radio buttons to select what video to play. The number of videos can change based on the user's library so this must be created automatically.  I have searched for how to accomplish this and there are several posts out there that help a little but I can't figure out the solution. I pulled the offending code from my main script and created the file below to make this easier to read. I am sure one of our experts here can help!
      #include <MsgBoxConstants.au3> #include <StringConstants.au3> #include <array.au3> #include <File.au3> #include <GUIConstantsEx.au3> Local $sMediaFile = "D:\MediaFiles\MediaFiles.txt" Local $iStrReturn = 0 Local $aText Local $aArrayFile Local $iMax = 6 ;Default number of Videos - 1 for the array counter Local $aVideoName[$iMax] = [0] Local $sCheckBox1 Local $iT = 0, $iVideoCount = 0, $iCount Local $ix = 0 Local $iy = 0 Local $idClose1 Const $iL = 10 ; Count from Left for GUI so all buttons line up ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; ; Read a list of video file names and create a GUI with Radio Buttons to select a single video. ; Problem: We don't know how many video names will be in the text file, so we can't hard code Case Statements & their variables ; Put the Video File Names into an Array _FileReadToArray($sMediaFile, $aArrayFile) For $a = 1 To $aArrayFile[0] ; Step through the array looking for .mp4 If StringInStr($aArrayFile[$a], ".mp4") Then $iVideoCount = $iVideoCount + 1 $aText = StringSplit($aArrayFile[$a],"\\") ; This video player reads double backslashes For $a1 = 1 to $aText[0] ; Check that the array is big enough If StringInStr($aText[$a1], ".mp4") Then ;MsgBox(0,"","Video is " & $aText[$a1]) If UBound($aVideoName) = $iVideoCount Then ; Resize the array when $iCount is equal to the element count in the array to prevent subscript error ReDim $aVideoName[$aVideoName[0] + $iMax] EndIf $aVideoName[$iVideoCount] = $aText[$a1]; add data to new index element $aVideoName[0] = $a1 ; update the index count for future reference ; The idea is to create a GUI width to accommodate long video file names $it = StringLen($aVideoName[$iVideoCount]) If $iT > $ix Then $ix = $iT EndIf EndIf Next EndIf Next ; Move backwards through the array deleting blank rows For $iCount = UBound($aVideoName) - 1 To 0 Step -1 If $aVideoName[$iCount] = "" Then _ArrayDelete($aVideoName, $iCount) EndIf Next ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; ; Create the GUI - Names and Radio Button counts will vary - How do I do this? ; ;_ArrayDisplay($aVideoName) ;Local $aVarName[$aVideoName[0]] Local $iRows = UBound($aVideoName, $UBOUND_ROWS) $iRows = $iRows -1 $aVideoName[0] = $iRows ; Prep the GUI to display the FileNames with Radio Buttons - Can only select one at a time. $a = 0 $ix = $ix + 200 $iy = ($aVideoName[0] * 30) + 60 $hGUI = GUICreate("Videos", $ix, $iy) ;$iT = $iT+30 ; Create the variable names for the Case statement - Video count may change so Video Names displayed and GUICtrlCreateRadio count may change. ;~ For $a = 1 to $aVarName[0] ;~ If UBound($aVarName) = $aVarName Then ;~ ; Resize the array when $iCount is equal to the element count in the array to prevent subscript error ;~ ReDim $aVarName[$aVarName[0] + $iMax] ;~ EndIf ;~ Assign("$bVideoName" & $a, $a) ;~ Local $aVarName[$a] = Eval($bVideoName[$a]) ;~ ; $aVarName[$a] = GUICtrlCreateRadio($aVarName[$a], $iL, $iT) ;~ Next $iCount = 1 ;MsgBox(0,"","VideoName[0] is "&$aVideoName[0]) ;_ArrayDisplay($aVideoName) Local $bVideoName1 If $iCount < $aVideoName[0] Then $bVideoName1 = GUICtrlCreateRadio($aVideoName[$iCount], $iL, $iT) GUICtrlSetState($bVideoName1, $GUI_CHECKED) $iT = $iT+30 EndIf $iCount = $iCount + 1 If $iCount <= ($aVideoName[0]) Then Local $bVideoName2 = GUICtrlCreateRadio($aVideoName[$iCount],$iL,$iT) $iT = $iT+30 EndIf $iCount = $iCount + 1 If $iCount <= ($aVideoName[0]) Then Local $bVideoName3 = GUICtrlCreateRadio($aVideoName[$iCount],$iL,$iT) $iT = $iT+30 EndIf $iCount = $iCount + 1 If $iCount <= ($aVideoName[0]) Then Local $bVideoName4 = GUICtrlCreateRadio($aVideoName[$iCount],$iL,$iT) $iT = $iT+30 EndIf $iCount = $iCount + 1 If $iCount <= ($aVideoName[0] -1) Then Local $bVideoName5 = GUICtrlCreateRadio($aVideoName[$iCount],$iL,$iT) $iT = $iT+30 EndIf $iCount = $iCount + 1 If $iCount <= ($aVideoName[0] -1) Then Local $bVideoName6 = GUICtrlCreateRadio($aVideoName[$iCount],$iL,$iT) $iT = $iT+30 EndIf $iCount = $iCount + 1 If $iCount <= ($aVideoName[0] -1) Then Local $bVideoName7 = GUICtrlCreateRadio($aVideoName[$iCount],$iL,$iT) $iT = $iT+30 EndIf $iT = $iT + 30 $idClose1 = GUICtrlCreateButton("Go!", $iL, $iT) GUISetState(@SW_SHOW) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; ; Switch Statement ; ;Local $nMsg = "" While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $bVideoName1 Case $bVideoName2 Case $bVideoName3 Case $bVideoName4 Case $bVideoName5 ;Case $bVideoName6 <- Fails because there are only 5 videos - Need variable $bVideoNames ;Case $bVideoName7 <- Fails because there are only 5 videos Case $idClose1 $bVideoName1 = GUICtrlRead($bVideoName1) $bVideoName2 = GUICtrlRead($bVideoName2) $bVideoName3 = GUICtrlRead($bVideoName3) $bVideoName4 = GUICtrlRead($bVideoName4) $bVideoName5 = GUICtrlRead($bVideoName5) ;$bVideoName6 = GUICtrlRead($bVideoName6) ;$bVideoName7 = GUICtrlRead($bVideoName7) ExitLoop EndSwitch WEnd GUIDelete($nMsg) MsgBox(0,"","Case " & $nMsg & " was selected.") ; Always returns 8. ??? This is the "MediaFiles.txt" file I am reading:
      D:\\MediaFiles\\BigBuckBunny.mp4 D:\\MediaFiles\\BigBuckBunny60fps.mp4 D:\\MediaFiles\\Sintel.mp4 D:\\MediaFiles\\sintel-2048-surround.mp4 D:\\MediaFiles\\TearsOfSteel.mp4 D:\\MediaFiles\\tearsofsteel_4K.mp4 I'm sure I have several mistakes (or poor coding methods) in my AutoIt file.
    • Skeletor
      By Skeletor
      Hi All,
      I know many newbies search for this feature.
      I decided to share this piece of code with everyone.
      Basically its a "splash screen" that has a transparent image.
      In a nutshell - Gui with a transparent gif.
      Enjoy...
      Download attachment....
       
      Splash Screen GUI.zip
    • Skeletor
      By Skeletor
      Hi Developers,
       
      While trying to find a way to actually style/skin the GUICtrlCreateTabItem, I read the help file and stated:
      My question to you guys is will this be updated? or am I hoping for something that will never come to pass?
      I've seen scripts between 2007 to 2009 allowing the tabs to be modified
      Reason for my question is I'm trying to make my GUI Tabs look more modern.
      Thanks in advance for reading my post.
       
    • Jibberish
      By Jibberish
      I am trying to get the results of a radio button selection. I have tried implementing sample scripts but to no avail.
      Can someone tell / show me what I am doing wrong?
      #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> Local $bSelect1 Local $bSelect2 Local $bSelect3 SelectButton() ;The results of SelectButton is not being returned MsgBox(0,"","Select1 is "& $bSelect1 & ". Select2 is "& $bSelect2 & ". Select3 is "& $bSelect3 & ".") Func SelectButton() Local $hGUI = GUICreate("SGX4CP Tests", 300, 300) GUISetState() Local $bSelect1 = GUICtrlCreateRadio("Select 1", 10, 160) Local $bSelect2 = GUICtrlCreateRadio("Select 2", 10, 190) Local $bSelect3 = GUICtrlCreateRadio("Select 3", 10, 220) ; Set TestSelectForever as the default radio button GUICtrlSetState($bSelect1, $GUI_CHECKED) Local $idClose = GUICtrlCreateButton("Start", 120,250) Local $idMsg While 1 $idMsg = GUIGetMsg() Select Case $idMsg = $GUI_EVENT_CLOSE Or $idMsg = $idClose ExitLoop Case $idMsg = $bSelect1 And BitAND(GUICtrlRead($bSelect1), $GUI_CHECKED) = $GUI_CHECKED MsgBox(0,"","Select1") Case $idMsg = $bSelect2 And BitAND(GUICtrlRead($bSelect2), $GUI_CHECKED) = $GUI_CHECKED MsgBox(0,"","Select2") Case $idMsg = $bSelect3 And BitAND(GUICtrlRead($bSelect3), $GUI_CHECKED) = $GUI_CHECKED MsgBox(0,"","Select3") ; GUICtrlRead($hGUI) EndSelect WEnd MsgBox(0,"","Select1 is "& $bSelect1 & ". Select2 is "& $bSelect2 & ". Select3 is "& $bSelect3 & ".") ; Why is this returning numbers? EndFunc  
    • VIP
      By VIP
      Please help create a GUI! Any ideas or guides are welcome!

      Create drag-and-drop GUIs:
      - GUI Min or Explan Main GUI Menu with top button! (Also the button to move drag and drop move)
      - Main GUI Menu: Stay in the center of the screen AND Always on the left or right side of the screen!
      - When you click on one of the menus, you will create or create a GUI: always on the left or right side of the main menu!


       
      SRC:
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <ColorConstantS.au3> Opt("MustDeclareVars", 1) ;0=no, 1=require pre-declaration Opt("TrayMenuMode", 1) ;0=append, 1=no default menu, 2=no automatic check, 4=menuitemID not return Opt("TrayAutoPause", 0) ;0=no pause, 1=Pause Opt("GUIOnEventMode", 1) ;0=disabled, 1=OnEvent mode enabled Opt("GUIResizeMode", 0) ;0=no resizing, <1024 special resizing #Region ### START Koda GUI section ### Form= Global $Form1 = GUICreate("MAIN_MENU", 117, 481, @DesktopWidth - 117, -1, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") GUISetBkColor($COLOR_BLUE) ; will change background color Global $Label1 = GUICtrlCreateLabel("<-!->", 0, 0, 116, 25, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) Global $Button0 = GUICtrlCreateButton("Button0", 1, 32, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button0") Global $Button1 = GUICtrlCreateButton("Button1", 1, 73, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button1") Global $Button2 = GUICtrlCreateButton("Button2", 1, 119, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button2") Global $Button3 = GUICtrlCreateButton("Button3", 1, 167, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button3") Global $Button4 = GUICtrlCreateButton("Button4", 1, 216, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button4") Global $Button5 = GUICtrlCreateButton("Button5", 1, 259, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button5") Global $Button6 = GUICtrlCreateButton("Button6", 1, 305, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button6") Global $Button7 = GUICtrlCreateButton("Button7", 1, 347, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button7") Global $Button8 = GUICtrlCreateButton("Button8", 1, 396, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button8") Global $Button9 = GUICtrlCreateButton("Exit", 1, 437, 115, 41, BitOR($BS_CENTER, $BS_VCENTER, $BS_FLAT)) GUICtrlSetOnEvent(-1, "_Button9") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 Sleep(50) WEnd Func _Exit() Exit EndFunc ;==>_Exit Func _CloseGUI() GUIDelete() EndFunc ;==>_CloseGUI Func _Button0() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_0", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 0", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button0 Func _Button1() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_1", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 1", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button1 Func _Button2() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_2", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 2", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button2 Func _Button3() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_3", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 3", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button3 Func _Button4() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_4", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 4", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button4 Func _Button5() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_5", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 5", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button5 Func _Button6() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_6", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 6", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button6 Func _Button7() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_7", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 7", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button7 Func _Button8() #Region ### START SUB GUI section ### Form= Global $Form2 = GUICreate("SUB_GUI_8", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) GUISetBkColor($COLOR_RED) ; will change background color Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 8", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) GUICtrlSetOnEvent(-1, "_CloseGUI") GUISetState(@SW_SHOW) #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button8 Func _Button9() _Exit() ;~ #Region ### START SUB GUI section ### Form= ;~ Global $Form2 = GUICreate("SUB_GUI_9", 310, 712, @DesktopWidth - 310 - 150, -1, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)) ; GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") ;~ Global $Label1 = GUICtrlCreateLabel("SUB GUI MENU 9", 0, 0, 234, 508, BitOR($SS_CENTER, $SS_CENTERIMAGE, $SS_RIGHTJUST), $GUI_WS_EX_PARENTDRAG) ;~ GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") ;~ Global $Button1 = GUICtrlCreateButton("Exit", 240, 456, 67, 49, BitOR($BS_CENTER, $BS_VCENTER)) ;~ GUICtrlSetOnEvent(-1, "_CloseGUI") ;~ GUISetState(@SW_SHOW) ;~ #EndRegion ### START SUB GUI section ### Form= EndFunc ;==>_Button9