Dan_555 Posted June 22, 2023 Share Posted June 22, 2023 What is the difference between these two commands ? expandcollapse popup#include <GUIConstantsEx.au3> Opt("TrayAutoPause", 0) Opt("TrayMenuMode", 11) TraySetClick(16) Global $idShow = TrayCreateItem("WinSetState") Global $idShow1 = TrayCreateItem("GuiSetState") TrayCreateItem("") Global $idExit = TrayCreateItem("Exit") #Region ### START Koda GUI section ### Form= $WindowManager = GUICreate("Test", 320, 200) $Button1 = GUICtrlCreateButton("Test", 1, 30, 49, 20) $label = GUICtrlCreateLabel("Activity",1,1,150,20) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE GuiSetState(@SW_HIDE) ;WinSetState ($WindowManager,"",@SW_HIDE) Case $Button1 GUICtrlSetData ($label, @HOUR &":" & @MIN &":" & @SEC &":"& " " &@MSEC) EndSwitch Switch TrayGetMsg() Case $idExit Exit Case $idShow WinSetState ($WindowManager,"",@SW_SHOW) Case $idShow1 GUISetState (@SW_SHOW) EndSwitch WEnd If you run the script and click on the x button, the window is hidden by the GuiSetState(@sw_hide). When you restore the window over the tray menu with WinSetState command, the window opens, but the buttons stop responding ... Is this a bug ? Some of my script sourcecode Link to comment Share on other sites More sharing options...
Andreik Posted June 22, 2023 Share Posted June 22, 2023 I am not aware about how these functions are implemented but why on earth would you mix them? If you work with GUIs created by your script use GUISetState, otherwise use WinSetState. When the words fail... music speaks. Link to comment Share on other sites More sharing options...
Moderators Solution Melba23 Posted June 22, 2023 Moderators Solution Share Posted June 22, 2023 Dan_555, There is a fundamental difference in how the internals of AutoIt deal with the 2 commands. I had a discussion with one of the then-developers some years ago: Dev: You don't want to use WinSetState over GUISetState on AutoIt GUI. M23: May I ask why? Dev: Because then the rest of the code wouldn't know the real state of the window and you will get unwanted (by AutoIt) behavior. Which I think is a pretty definitive statement. I would go along with Andreik's suggestion above: AutoIt GUIS = GUISetState - other GUIs - WinSetState. M23 Dan_555 and pixelsearch 1 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Dan_555 Posted June 22, 2023 Author Share Posted June 22, 2023 Thanks Melba23 for clarification. but why on earth would you mix them? I had to restore the window after it has been hidden and because my last script dealt with window manipulations, i used the winsetstate instead of the GuiSetState. So when the buttons stopped working i was wondering why and discovered that is it up to these 2 commands. Some of my script sourcecode Link to comment Share on other sites More sharing options...
CYCho Posted October 27, 2023 Share Posted October 27, 2023 Hiding an AutoIt GUI with WinSetState triggers a false detection by Windows Defender. zPlayer - A Small Audio and Video Player Time Sync + SystemTimeAdjustment Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now