Jump to content
Sign in to follow this  
XiaolinDraconis

Controls not keeping previous settings

Recommended Posts

Don't see why it won't keep the settings when Options() gets called, keeps reverting to unchecked radios and slider at 100 of 255. It should be reading the INI for those values each time it's called.

#NoTrayIcon
#include <Misc.au3>
#include <MsgBoxConstants.au3>
#include <TrayConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Opt("TrayMenuMode", 3) ; The default tray menu items will not be shown and items are not checked when selected. These are options 1 and 2 for TrayMenuMode.
Opt("TrayOnEventMode", 1) ; Enable TrayOnEventMode.

HotKeySet("^{SPACE}", "TapTimer")

If FileExists(".\OTPT.ini") Then
    Sleep(1000)
Else
    IniWrite("OTPT.ini", "AOT", "True", "1" & @CRLF)
    IniWrite("OTPT.ini", "Transparency", "Value", "204" & @CRLF & @CRLF & "Max Transparency Value = 255")
EndIf

$Toggle = 0
$AOT = IniRead("OTPT.ini", "AOT", "True", "1")
$Transparency = IniRead("OTPT.ini", "Transparency", "Value", "204")


TrayMenu()

Func TrayMenu()
    TrayCreateItem("Settings")
    TrayItemSetOnEvent(-1, "Options")

    TrayCreateItem("About")
    TrayItemSetOnEvent(-1, "About")

    TrayCreateItem("") ; Create a separator line.

    TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1, "ExitScript")

    TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "Options") ; Display the About MsgBox when the tray icon is double clicked on with the primary mouse button.

    TraySetState($TRAY_ICONSTATE_SHOW) ; Show the tray menu.
EndFunc   ;==>TrayMenu

While 1
    Sleep(100) ; An idle loop.
WEnd

Func TapTimer()
    HotKeySet("^{SPACE}")
    $TapTime = 0
    While _IsPressed("20")
        Sleep(1000)
        $TapTime += 1
    WEnd
    If $TapTime < 3 Then
        OnTop()
        Sleep(500)
    Else
        Options()
        Sleep(500)
    EndIf
    HotKeySet("^{SPACE}", "TapTimer")
EndFunc   ;==>TapTimer

Func Options()

    $Form1 = GUICreate("Settings", 290, 142)
    $Radio1 = GUICtrlCreateRadio("", 119, 32, 17, 17)
    If $AOT = 1 Then
        GUICtrlSetData($Radio1, $GUI_CHECKED, $GUI_CHECKED)
    Else
        GUICtrlSetData($Radio1, $GUI_UNCHECKED, $GUI_UNCHECKED)
    EndIf
    $Radio2 = GUICtrlCreateRadio("", 168, 32, 17, 17)
    $Label1 = GUICtrlCreateLabel("ON", 96, 32, 20, 17)
    $Label2 = GUICtrlCreateLabel("OFF", 142, 30, 24, 17)
    $Slider = GUICtrlCreateSlider(13, 72, 255, 25)
    GUICtrlSetData(-1, $Transparency)
    GUICtrlSetLimit(-1, 255, 0)
    $Label3 = GUICtrlCreateLabel("-", 8, 72, 15, 17)
    $Label4 = GUICtrlCreateLabel("+", 269, 70, 10, 17)
    $Label5 = GUICtrlCreateLabel("Always On Top", 102, 3, 89, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("Transparency", 106, 56, 81, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 128, 104, 33, 33)
    GUISetState(@SW_SHOW)
    WinSetOnTop("Settings", "", 1)

    While 1
        WinActivate("Settings")
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                GUISetState(@SW_HIDE)
                ExitLoop
            Case $OK
                While GUICtrlRead($Radio1) = $GUI_UNCHECKED And GUICtrlRead($Radio2) = $GUI_UNCHECKED
                    Sleep(100)
                    ToolTip("Please Select ON/OFF State")
                    WinActivate("Settings")
                WEnd
                If GUICtrlGetState($Radio1) = $GUI_CHECKED Then
                    $AOT = 1
                    $Transparency = GUICtrlRead($Slider)
                Else
                    $AOT = 0
                    $Transparency = GUICtrlRead($Slider)
                EndIf
                IniWrite("OTPT.ini", "AOT", "True", $AOT)
                IniWrite("OTPT.ini", "Transparency", "Value", $Transparency)
                ToolTip("")
                GUISetState(@SW_HIDE)
                ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>Options

Func About()
    MsgBox($MB_OK, "About", "OnTopPeekThrough" & @CRLF & @CRLF & _
            "Press CTRL+SPACE to toggle" & @CRLF & _
            "Or hold 3 seconds for Options" & @CRLF & @CRLF & _
            "By: XiaolinDraconis")
EndFunc   ;==>About

Func OnTop()
    If $Toggle = 0 Then
        $Toggle = 1
        Set()
    Else
        $Toggle = 0
        Unset()
    EndIf
EndFunc   ;==>OnTop

Func Set()
    $WinTitle = WinGetTitle("[active]")
    WinSetOnTop($WinTitle, "", 1)
    WinSetTrans($WinTitle, "", $Transparency)
EndFunc   ;==>Set

Func Unset()
    $WinTitle = WinGetTitle("[active]")
    WinSetOnTop($WinTitle, "", 0)
    WinSetTrans($WinTitle, "", 255)
EndFunc   ;==>Unset

Func ExitScript()
    Exit
EndFunc   ;==>ExitScript

Share this post


Link to post
Share on other sites

apparently i didnt entirely fix it.

Try: 

If $AOT = 1 Then
        GUICtrlSetState($Radio1, $GUI_CHECKED)
    Else
        GUICtrlSetState($Radio1, $GUI_UNCHECKED)
    EndIf

Edit: A more elegant way to handle having a Tray menu and a GUI would be to have a single While loop where you listen for messages from Tray and from the GUI and handle it that way:

P.S. I fixed the issues you were having with the ini not updating and also added a label to the Transparency slider to show the selected number.

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

Opt("TrayMenuMode", 3)
HotKeySet("^{SPACE}", "TapTimer")

Global $inifile = @ScriptDir & "\OTPT.ini", $transparency = 204, $AOT = 1, $Toggle = 0

If FileExists($inifile) Then
    $AOT = IniRead($inifile, "AOT", "True", "1")
    $transparency = IniRead($inifile, "Transparency", "Value", "204")
Else
    IniWrite($inifile, "AOT", "True", $AOT & @CRLF)
    IniWrite($inifile, "Transparency", "Value", $transparency & @CRLF & @CRLF & "Max Transparency Value = 255")
EndIf

#Region ### START $optionsGUI ###
$optionsGUI = GUICreate("Options", 365, 200, @DesktopWidth/2 - 365/2, @DesktopHeight/2 - 200/2)
$RadioON = GUICtrlCreateRadio("ON", 128, 40, 49, 17)
If $AOT = 1 Then GUICtrlSetState(-1, $GUI_CHECKED)
$RadioOFF = GUICtrlCreateRadio("OFF", 184, 40, 49, 17)
If $AOT = 0 Then GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateLabel("Always on top:", 116, 8, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0)
GUICtrlCreateLabel("Transparency:", 96, 74, 117, 24)
GUICtrlSetFont(-1, 12, 800, 0)
$tlabel = GUICtrlCreateLabel($transparency, 216, 74, 117, 24)
GUICtrlSetFont(-1, 12, 800, 0)
$tSlider = GUICtrlCreateSlider(24, 112, 318, 45)
GUICtrlSetLimit(-1, 255, 0)
GUICtrlSetData(-1, $transparency)
$optionsBtn_okay = GUICtrlCreateButton("OK", 136, 160, 75, 25)
#EndRegion ### END $optionsGUI ###

$options = TrayCreateItem("Settings")
$about = TrayCreateItem("About")
TrayCreateItem("") ; Create a separator line.
$exit = TrayCreateItem("Exit")

While 1

    Local $tMsg = TrayGetMsg()
    Switch $tMsg
        Case $options
            GUISetState(@SW_SHOW, $optionsGUI)
        Case $about
            MsgBox(0, "About", "OnTopPeekThrough" & @CRLF & @CRLF & _
                    "Press CTRL+SPACE to toggle" & @CRLF & _
                    "Or hold 3 seconds for Options" & @CRLF &  @CRLF & _
                    "By: XiaolinDraconis")
        Case $exit
            Exit
    EndSwitch

    Local $gMsg = GUIGetMsg()
    Switch $gMsg
        Case $optionsBtn_okay
            If GUICtrlRead($RadioON) = $GUI_CHECKED Then
                IniWrite($inifile, "AOT", "True", 1)
            ElseIf GUICtrlRead($RadioOFF) = $GUI_CHECKED Then
                IniWrite($inifile, "AOT", "True", 0)
            EndIf
            IniWrite($inifile, "Transparency", "Value", GUICtrlRead($tlabel))
            GUISetState(@SW_HIDE, $optionsGUI)
        Case $tSlider
            $val = GUICtrlRead($tSlider)
            GUICtrlSetData($tlabel, $val)
        Case $GUI_EVENT_CLOSE
            GUISetState(@SW_HIDE, $optionsGUI)
    EndSwitch

WEnd

Func TapTimer()
    HotKeySet("^{SPACE}")
    $TapTime = 0
    While _IsPressed("20")
        Sleep(1000)
        $TapTime += 1
    WEnd
    If $TapTime < 3 Then
        OnTop()
    Else
        GUISetState(@SW_SHOW, $optionsGUI)
    EndIf
    HotKeySet("^{SPACE}", "TapTimer")
EndFunc   ;==>TapTimer

Func OnTop()
    If $Toggle = 0 Then
        $Toggle = 1
        Set()
    Else
        $Toggle = 0
        Unset()
    EndIf
EndFunc   ;==>OnTop

Func Set()
    $WinTitle = WinGetTitle("[active]")
    WinSetOnTop($WinTitle, "", 1)
    WinSetTrans($WinTitle, "", $Transparency)
EndFunc   ;==>Set

Func Unset()
    $WinTitle = WinGetTitle("[active]")
    WinSetOnTop($WinTitle, "", 0)
    WinSetTrans($WinTitle, "", 255)
EndFunc   ;==>Unset

I'll be honest I am not 100% sure with HotKeys and the way you have gone about handling the way the Hot Keys work to set window transparency etc, but it seems to work, albeit somewhat choppy.

Edited by mpower

Share this post


Link to post
Share on other sites

Try: 

If $AOT = 1 Then
        GUICtrlSetState($Radio1, $GUI_CHECKED)
    Else
        GUICtrlSetState($Radio1, $GUI_UNCHECKED)
    EndIf

Edit: A more elegant way to handle having a Tray menu and a GUI would be to have a single While loop where you listen for messages from Tray and from the GUI and handle it that way:

P.S. I fixed the issues you were having with the ini not updating and also added a label to the Transparency slider to show the selected number.

I'll be honest I am not 100% sure with HotKeys and the way you have gone about handling the way the Hot Keys work to set window transparency etc, but it seems to work, albeit somewhat choppy.

 

Very nice, thank you. I know the Hotkey thing is sloppy, but I didn't see another way to go about having the delay for opening the options. Think I'll turn that into a double tap instead of holding it. 

The double tap method I'm gonna use is still choppy, but also I need to work out some more issues. It doesn't seem to be saving the transparency setting properly, also it is applying the transparency setting to the Settings GUI. Pretty sure some of that if not all is coming from the way I setup the Hotkey.

I'll work it out, then post what I did when I'm done.

Edited by XiaolinDraconis

Share this post


Link to post
Share on other sites

Ok so the transparency issue was due to a mix up in the variables, and the hotkey method I chose was with If Then statements and that just didn't work well so I went with a Switch Case.

And TADA! Thanks again, oh and if you notice the hotkey has a variable now, that's for future adjustments, going to make it so the key can be changed.

Near Perfection

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

Opt("TrayMenuMode", 3)

Global $inifile = @ScriptDir & "\OTPT.ini", $val = IniRead($inifile,"Transparency","Value","204"), $transparency = 204, $AOT = 1, $Toggle = 0, $TapCount = 0, $Hotkey = "^{SPACE}"

HotKeySet($Hotkey, "TapTimer")

If FileExists($inifile) Then
    $AOT = IniRead($inifile, "AOT", "True", "1")
    $transparency = IniRead($inifile, "Transparency", "Value", "204")
Else
    IniWrite($inifile, "AOT", "True", $AOT & @CRLF)
    IniWrite($inifile, "Transparency", "Value", $transparency & @CRLF & @CRLF & "Max Transparency Value = 255")
EndIf

$optionsGUI = GUICreate("Options", 365, 200, @DesktopWidth / 2 - 365 / 2, @DesktopHeight / 2 - 200 / 2)
$RadioON = GUICtrlCreateRadio("ON", 128, 40, 49, 17)
If $AOT = 1 Then GUICtrlSetState(-1, $GUI_CHECKED)
$RadioOFF = GUICtrlCreateRadio("OFF", 184, 40, 49, 17)
If $AOT = 0 Then GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateLabel("Always on top:", 116, 8, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0)
GUICtrlCreateLabel("Transparency:", 96, 74, 117, 24)
GUICtrlSetFont(-1, 12, 800, 0)
$tlabel = GUICtrlCreateLabel($transparency, 216, 74, 117, 24)
GUICtrlSetFont(-1, 12, 800, 0)
$tSlider = GUICtrlCreateSlider(24, 112, 318, 45)
GUICtrlSetLimit(-1, 255, 0)
GUICtrlSetData(-1, $transparency)
$optionsBtn_okay = GUICtrlCreateButton("OK", 136, 160, 75, 25)

$options = TrayCreateItem("Settings")
$about = TrayCreateItem("About")
TrayCreateItem("") ; Create a separator line.
$exit = TrayCreateItem("Exit")

While 1
    Local $tMsg = TrayGetMsg()
    Switch $tMsg
        Case $options
            GUISetState(@SW_SHOW, $optionsGUI)
        Case $about
            MsgBox(0, "About", "OnTopPeekThrough" & @CRLF & @CRLF & _
                    "Press" & $Hotkey & "to toggle" & @CRLF & _
                    "Or double tap for Options" & @CRLF & @CRLF & _
                    "By: AutoIt V3")
        Case $exit
            Exit
    EndSwitch

    Local $gMsg = GUIGetMsg()
    Switch $gMsg
        Case $optionsBtn_okay
            If GUICtrlRead($RadioON) = $GUI_CHECKED Then
                IniWrite($inifile, "AOT", "True", 1)
            ElseIf GUICtrlRead($RadioOFF) = $GUI_CHECKED Then
                IniWrite($inifile, "AOT", "True", 0)
            EndIf
            IniWrite($inifile, "Transparency", "Value", GUICtrlRead($tlabel))
            GUISetState(@SW_HIDE, $optionsGUI)
        Case $tSlider
            $val = GUICtrlRead($tSlider)
            GUICtrlSetData($tlabel, $val)
            WinSetTrans($optionsGUI,"",$val)
            Sleep(666)
            WinSetTrans($optionsGUI,"",255)
        Case $GUI_EVENT_CLOSE
            GUISetState(@SW_HIDE, $optionsGUI)
    EndSwitch
WEnd

Func TapTimer()
    $TapCount += 1
    Sleep(500)
    Switch $TapCount
    Case 2
        GUISetState(@SW_SHOW, $optionsGUI)
        WinSetOnTop($optionsGUI, "", 1)
        WinSetTrans($optionsGUI, "", 255)
        $TapCount = 0
    Case 1
        OnTop()
        $TapCount = 0
    Case Else
        GUISetState(@SW_SHOW, $optionsGUI)
        WinSetOnTop($optionsGUI, "", 1)
        WinSetTrans($optionsGUI, "", 255)
        $TapCount = 0
    EndSwitch
EndFunc   ;==>TapTimer

Func OnTop()
    If $Toggle = 0 Then
        $Toggle = 1
        Set()
    Else
        $Toggle = 0
        Unset()
    EndIf
EndFunc   ;==>OnTop

Func Set()
    $WinTitle = WinGetTitle("[active]")
    WinSetOnTop($WinTitle, "", 1)
    WinSetTrans($WinTitle, "", $val)
EndFunc   ;==>Set

Func Unset()
    $WinTitle = WinGetTitle("[active]")
    WinSetOnTop($WinTitle, "", 0)
    WinSetTrans($WinTitle, "", 255)
EndFunc   ;==>Unset

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 jpomalley
      Hi all,
      Does anyone know if there is a way to disable the Windows "fade effect" that occurs when a window appears or disappears?
      It is possible for a user to disable visual effects in windows in general through the system properties > performance settings, but I am interested just in fixing it for a particular window that pops up in my app.
      I would like it to appear and disappear instantaneously, snapping in and out, out of nowhere, rather than the short (maybe 300 ms?) fade in/fade out effect that windows has.
      Thanks for any tips
      JP
    • By fastman
      I am struggling with activating the 2nd GUI.  References of https://www.autoitscript.com/wiki/Managing_Multiple_GUIs did not help.
      Gui2 and controls are created, but the buttons are not active.  I have tried to remove extra code.
      Thanks for any help.
      ; ; cabinet maker process to automate MasterCam ; ATP nesting process ; #include <AutoItConstants.au3> #include <Array.au3> ;#include <file.au3> ;#include <FileConstants.au3> #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <WinAPI.au3> #include <WinAPIFiles.au3> #include <WindowsConstants.au3> ;#include <XML.au3>; If XML library is updated, note that this script requires that save file will overwrite an existing file Opt("GUIOnEventMode", 1) ; 1 = OnEvent mode Opt("WinWaitDelay", 500) ; milliseconds Opt("TrayIconDebug", 1) Opt("WinSearchChildren", 1) Global $hMainGUI Global $hMainGUI2 Func GetAllWindowsControls($hCallersWindow, $bOnlyVisible = Default, $sStringIncludes = Default, $sClass = Default) If Not IsHWnd($hCallersWindow) Then ConsoleWrite("$hCallersWindow must be a handle...provided=[" & $hCallersWindow & "]" & @CRLF) Return False EndIf ; Get all list of controls If $bOnlyVisible = Default Then $bOnlyVisible = True If $sStringIncludes = Default Then $sStringIncludes = "" If $sClass = Default Then $sClass = "" $sClassList = WinGetClassList($hCallersWindow) ; Create array $aClassList = StringSplit($sClassList, @CRLF, 2) ; Sort array _ArraySort($aClassList) _ArrayDelete($aClassList, 0) ; Loop $iCurrentClass = "" $iCurrentCount = 1 $iTotalCounter = 1 If StringLen($sClass) > 0 Then For $i = UBound($aClassList) - 1 To 0 Step -1 If $aClassList[$i] <> $sClass Then _ArrayDelete($aClassList, $i) EndIf Next EndIf For $i = 0 To UBound($aClassList) - 1 If $aClassList[$i] = $iCurrentClass Then $iCurrentCount += 1 Else $iCurrentClass = $aClassList[$i] $iCurrentCount = 1 EndIf $hControl = ControlGetHandle($hCallersWindow, "", "[CLASSNN:" & $iCurrentClass & $iCurrentCount & "]") $text = StringRegExpReplace(ControlGetText($hCallersWindow, "", $hControl), "[\n\r]", "{@CRLF}") $aPos = ControlGetPos($hCallersWindow, "", $hControl) $sControlID = _WinAPI_GetDlgCtrlID($hControl) $bIsVisible = ControlCommand($hCallersWindow, "", $hControl, "IsVisible") If $bOnlyVisible And Not $bIsVisible Then $iTotalCounter += 1 ContinueLoop EndIf If StringLen($sStringIncludes) > 0 Then If Not StringInStr($text, $sStringIncludes) Then $iTotalCounter += 1 ContinueLoop EndIf EndIf If IsArray($aPos) Then ;ConsoleWrite("ControlID=[" & StringFormat("%5s", $sControlID) & "] Handle=[" & StringFormat("%10s", $hControl) & "] ClassNN=[" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "] XPos=[" & StringFormat("%4s", $aPos[0]) & "] YPos=[" & StringFormat("%4s", $aPos[1]) & "] Width=[" & StringFormat("%4s", $aPos[2]) & "] Height=[" & StringFormat("%4s", $aPos[3]) & "] IsVisible=[" & $bIsVisible & "] Text=[" & $text & "]." & @CRLF) ConsoleWrite("Func=[GetAllWindowsControls]: ControlCounter=[" & StringFormat("%3s", $iTotalCounter) & "] ControlID=[" & StringFormat("%5s", $sControlID) & "] Handle=[" & StringFormat("%10s", $hControl) & "] ClassNN=[" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "] XPos=[" & StringFormat("%4s", $aPos[0]) & "] YPos=[" & StringFormat("%4s", $aPos[1]) & "] Width=[" & StringFormat("%4s", $aPos[2]) & "] Height=[" & StringFormat("%4s", $aPos[3]) & "] IsVisible=[" & $bIsVisible & "] Text=[" & $text & "]." & @CRLF) Else ;ConsoleWrite("ControlID=[" & StringFormat("%5s", $sControlID) & "] Handle=[" & StringFormat("%10s", $hControl) & "] ClassNN=[" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "] XPos=[winclosed] YPos=[winclosed] Width=[winclosed] Height=[winclosed] Text=[" & $text & "]." & @CRLF) ConsoleWrite("Func=[GetAllWindowsControls]: ControlCounter=[" & StringFormat("%3s", $iTotalCounter) & "] ControlID=[" & StringFormat("%5s", $sControlID) & "] Handle=[" & StringFormat("%10s", $hControl) & "] ClassNN=[" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "] XPos=[winclosed] YPos=[winclosed] Width=[winclosed] Height=[winclosed] Text=[" & $text & "]." & @CRLF) EndIf If Not WinExists($hCallersWindow) Then ExitLoop $iTotalCounter += 1 Next ;MsgBox($MB_SYSTEMMODAL, "title", "check console for control list") EndFunc ;==>GetAllWindowsControls ; ======= Func GetAllWindowsControls($hCallersWindow, $bOnlyVisible = Default, $sStringIncludes = Default, $sClass = Default) ========= Func setNestingOverlay() $ovrWidth = 400 $ovrHeight = 60 $ovrLeft = -1 ;$mcamWindow[0] + $nestControlRelative[0] $ovrTop = -1;$mcamWindow[1] + $nestControlRelative[1]+ 10 $hMainGUI = GUICreate("covering mastercam buttons", $ovrWidth, $ovrHeight, $ovrLeft, $ovrTop, -1, $WS_EX_TOPMOST) GUISetOnEvent($GUI_EVENT_CLOSE, "CloseButton2") Local $iOKButton1 = GUICtrlCreateButton("Continue to gui2", 20, 20, 80) GUICtrlSetOnEvent($iOKButton1, "NestResultButtonOverlay") GUISetState(@SW_SHOW, $hMainGUI) GetAllWindowsControls(WinGetHandle("[ACTIVE]")) ;loop to monitor button click While 1 Sleep(50) ; Sleep to reduce CPU usage WEnd ConsoleWrite(" exit loop setNestingOverlay") EndFunc ;==>setNestingOverlay ;=== 2nd gui ======= 2nd gui ======= 2nd gui ======= 2nd gui ======= 2nd gui ======= 2nd gui ==== func NestResultButtonOverlay() $ovrWidth = -1;$mcamWindow[2] - 10 $ovrHeight = 70 ;40 $ovrLeft = -1 ;$mcamWindow[0] + 5 ;+ $nestControlRelative[0] $ovrTop = -1 ;$mcamWindow[1] + $nestControlRelative[1]+ 10 $hMainGUI2 = GUICreate("gui2-- covering nest result buttons", $ovrWidth, $ovrHeight, $ovrLeft, $ovrTop, -1, $WS_EX_TOPMOST) ;width, height, left, top ;GUISetState(@SW_DISABLE + @SW_MINIMIZE, $hMainGUI) ;GUISwitch($hMainGUI2) GUISetOnEvent($GUI_EVENT_CLOSE, "CloseButton2") local $iBackNestingButton = GUICtrlCreateButton("Back to Nesting", 20, 10, 120) GUICtrlSetOnEvent($iBackNestingButton, "backtoNesting") Local $iOKButton2 = GUICtrlCreateButton("Continue for g-Code", 160, 10, 120) GUICtrlSetOnEvent(-1, "generateGCode") ;GUICtrlSetOnEvent($iOKButton2, "generateGCode") Local $iDoneButton2 = GUICtrlCreateButton("Oops go back to vortex", 300, 10, 120) GUICtrlSetOnEvent($iDoneButton2, "CloseButton2") GUISetState(@SW_SHOW, $hMainGUI2) GUISetState(@SW_DISABLE + @SW_MINIMIZE, $hMainGUI) GUISwitch($hMainGUI2) GetAllWindowsControls(WinGetHandle("[ACTIVE]")) While 1 Sleep(50) ; Sleep to reduce CPU usage WEnd ConsoleWrite(" exit loop NestResultButtonOverlay") EndFunc ;==>setNestingOverlay func backtoNesting() msgbox($MB_SYSTEMMODAL, "gui2","backtoNesting") EndFunc Func CloseButton2() msgbox($MB_SYSTEMMODAL, "gui2","CloseButton2") Exit EndFunc func generateGCode() msgbox($MB_SYSTEMMODAL, "gui2","generateGCode") EndFunc ; =========== main =========== main =========== main =========== main =========== main =========== main setNestingOverlay()  
    • By Blueman
      Hey Guys,
      Maybe you can help me with something small.
      It is not terrible but it slows down my script and after a while even crash the script.

      First i explain what i have;
      I have a GUI with a lot of GUICtrlCreateInput controls, lets say 600 pieces.
      All the controls are hidden when the GUI is displayed, i have 3 buttons attached to 200 pieces each.
      When i press button-1 the first 200 controls are showed,
      When i press button-2 the first 200 controls are hidden and the next 200 controls are showed,
      etc, etc.
      This is working perfectly but after a while the GUI is getting slower and slower.
      After a while the controls aren't responding anymore and the script crashes.
      When i compile the script to 64-Bits version the speed is a lot better but you can still see the script slowing down each time i use the buttons.
      I think there has to be a buffer somewhere that is filling each time i show and hide the controls, but how can i clear that buffer without restarting the script?
      Deleting and re-creating the controls didn't help, deleting the entire gui (and controls) and re-creating it didn't help also.
      The only thing that is working is restarting the script.

      Thanks guys!

      PS: If you need a working example i can add it to this topic, just let me know. It is not rocket science, i just create the controls and show/hide them with a while loop and 3 buttons.
       
    • By TheDcoder
      ProxAllium
      ProxAllium is a GUI frontend to Tor, it aims to make the usage of Tor easier by directly exposing its SOCK5 proxy which can be used to access the Tor network. The GUI is designed to be simple and user-friendly and it has a few other features... namely:
      Fully portable - doesn't write outside its own directory Integrated with Tor via the controller interface and properly communicates with it Minimize to tray Option to start with Windows Interface to configure bridges if Tor is censored in your region Many customization options are available via the config.ini file Screenshots:
      The code is made with pure AutoIt, is fully open source and you are free to adapt it to your needs
      The GitHub repository hosts all the releases and code. As a bonus it has a somewhat sparsely documented Tor UDF which can be used to control Tor, the code also demonstrates the proper usage of my Process UDF which might be interesting if you want to deal with processes.
       
      As some of my friends know, I no longer use Windows as my main operating system. I switched to Linux a few months back as my primary operating system and haven't looked back since. Unfortunately that meant I could no longer use my own program due to it being Windows only... after a few months of playing around with C and making a basic program, I have decided to rewrite all of ProxAllium into C and make it cross-platform. Sadly this means that the AutoIt version of ProxAllium will not receive any major updates now.
      Let me know if this is something you guys would use, I used it daily with my IRC client to connect via Tor (to protect my I.P). I hope you enjoy using my program!
    • By morion84
      Hi, when I call a MsgBox function I can use a "$MB_SERVICE_NOTIFICATION" flag so it will be displayed "on the current active desktop, even if there is no user logged on to the computer.". That works just great. Is there a way to do the same to Autoit GUI Form so it will be visible on desktop even if running from system account and user is not logged?
×
×
  • Create New...