Sign in to follow this  
Followers 0
ajenkins

gui active after running process

22 posts in this topic

after i run a process by clicking a button on my gui, all buttons on my gui are disabled until the process is finished. how can I keep my gui active?

Share this post


Link to post
Share on other sites



Well, you could just not click any of those buttons, that would keep your GUI active. Or you could post your code and somebody would probably be able to help you.


- Bruce /*somdcomputerguy */  If you change the way you look at things, the things you look at change.

Share this post


Link to post
Share on other sites

ajenkins,

Please lose the attitude. How on earth do you expect anyone to give you a sensible reply without sight of the code you are using? i can think of a myriad of reasons as to why the problem occurs and how it might be solved, but unless I can see exectly what you are doing it is impossible to say which scenario/solution we need. ;)

So please just post the code you are using and we will see how we can help. :)

M23

P.S. And as you seem to be so keen on quoting the rules - have this one right back: :naughty:

 

"Do not flame or insult other members"


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

you're right Melba23. I'll try to do better.

Share this post


Link to post
Share on other sites

ajenkins,

Good. So let us see the code and we can move on. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

@ ajenkins - My post was a bit smartassed, but it was meant goodhearted. I should've made such a post in a different, more unmistakeable, manner.

@ Melba23 - Apparently you deleted the reply to my post. I did see the original one, which wasn't bad, but I guess it was edited (which I didn't see) and got your attention. I should've just not made any reply at all, or at least not thrown in the 'then don't click' sentence.. Sorry I made it so you had to have your fireman's hat handy.. Keep on doing well the tough mod job that you do.


- Bruce /*somdcomputerguy */  If you change the way you look at things, the things you look at change.

Share this post


Link to post
Share on other sites

Somdcomputerguy i deleted the post, no editing, just the original post. I see now that the problem, as m23 aptly pointed, was my attitude. I felt that a post that needed modrration is a post that this forum doesn't deserve. Thank you for taking the time to psot on my topic and for trying to help mw with my scripting. I know you could've just passed and not tries to help. I appollogise for my poor attitude earlier. I am at work now, and will try to put something together to post later. I am working on an ffmpeg frontend that is very large so ill mock up something smaller with the same code and moving parts. Thanks again

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

Hey, no worries. About the original/edit thing, actually I had that confused with another thread. But again, no worries. Without seeing the code though, I will still take a shot in dark here. Maybe you are using the RunWait or ShellExecuteWait functions to execute these other processes. Either of those functions will 'pause' the script until the called program ends. If you are using either of those functions, use either the Run or ShellExecute functions instead.

Edited by somdcomputerguy

- Bruce /*somdcomputerguy */  If you change the way you look at things, the things you look at change.

Share this post


Link to post
Share on other sites

Here is what I'm trying to do. When you push button1 the gui calls ffmpeg and runs through selected folder. I wanted to make button2 send the "q" key to ffmpeg process. But realized I can't even exit while ffmpeg process is running. I figured I would need to solve that first.

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <ProgressConstants.au3>
#include <Constants.au3>
#include <GuiEdit.au3>
#include <Date.au3>
#include <ButtonConstants.au3>

gui1()
Func gui1()
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 478, 192, 124)
Global $Edit1 = GUICtrlCreateEdit("", 8, 16, 601, 289)
GUICtrlSetData(-1, "Edit1")
Global $Progress1 = GUICtrlCreateProgress(8, 320, 593, 33)
Global $Progress2 = GUICtrlCreateProgress(8, 368, 601, 33)
$Button1 = GUICtrlCreateButton("Start", 24, 432, 89, 25)
$Button2 = GUICtrlCreateButton("next", 128, 432, 89, 25)
$Button3 = GUICtrlCreateButton("Exit", 232, 432, 89, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            exitprog()
        Case $Button1
            start()
        case $Button2

        Case $Button3
            exitprog()
    EndSwitch
WEnd
EndFunc

Func start()
$somefolder = FileSelectFolder("Select Encode Folder", "")
$Afiles = _FileListToArray($somefolder)
$sStdErr = ""
$iTicksDuration = 0
$iTicksTime = 0
$ffmpeg = $somefolder&"\ffmpeg.exe"

for $i = 1 to $Afiles[0]
    $file = $Afiles[$i]
    $hPid = Run($ffmpeg & ' -i "' & $file & '" "' & stringtrimright($file , 4) & '_output.mp4"', $somefolder, @SW_HIDE, 0x4)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            exitprog()
    EndSwitch
    Sleep(500)
    $sStdErr &= StderrRead($hPid)
    If @error Then ExitLoop
    GUICtrlSetData($Edit1,$sStdErr)
    If StringLen($sStdErr) > 0 Then
        If Not $iTicksDuration Then $iTicksDuration = _GetDuration($sStdErr)
        $iTicksTime = _GetTime($sStdErr)
        If Not @error Then $sStdErr = ""
        GUICtrlSetData($Progress1, $iTicksTime * 100 / $iTicksDuration)
    EndIf

WEnd
ProgressOff()
GUICtrlSetData($Progress2, ($i/$Afiles[0]) * 100)
Next
EndFunc

Func _GetDuration($sStdErr)
    If Not StringInStr($sStdErr, "Duration:") Then Return SetError(1, 0, 0)
    Local $aRegExp = StringRegExp($sStdErr, "(?i)Duration.+?([0-9:]+)", 3)
    If @error Or Not IsArray($aRegExp) Then Return SetError(1, 0, 0)
    Local $sTime = $aRegExp[UBound($aRegExp) - 1]
    Local $aTime = StringSplit($sTime, ":", 2)
    If @error Or Not IsArray($aTime) Then Return SetError(1, 0, 0)
    Return _TimeToTicks($aTime[0], $aTime[1], $aTime[2])
EndFunc   ;==>_GetDuration

Func _GetTime($sStdErr)
    If Not StringInStr($sStdErr, "time=") Then Return SetError(1, 0, 0)
    Local $aRegExp = StringRegExp($sStdErr, "(?i)time.+?([0-9:]+)", 3)
    If @error Or Not IsArray($aRegExp) Then Return SetError(1, 0, 0)
    Local $sTime = $aRegExp[UBound($aRegExp) - 1]
    Local $aTime = StringSplit($sTime, ":", 2)
    If @error Or Not IsArray($aTime) Then Return SetError(1, 0, 0)
    Return _TimeToTicks($aTime[0], $aTime[1], $aTime[2])
EndFunc   ;==>_GetTime

Func exitprog()
    if ProcessExists("ffmpeg.exe") Then
        ProcessClose("ffmpeg.exe")
    EndIf
Exit
EndFunc

p.s. I know this should've been my first post...

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

Hm, I should've known that I wouldn't have just been shooting in the dark, but shooting blanks in the dark.. I'm thinking now maybe this has something to do with MessageLoop mode vs. OnEvent mode. I'm really not all that good at troubleshooting others scripts, but I'm sure you will receive some more helpful replies for this.

Good luck!

Edited by somdcomputerguy

- Bruce /*somdcomputerguy */  If you change the way you look at things, the things you look at change.

Share this post


Link to post
Share on other sites

ajenkins,

This amended version works for me - but I only tested with Notepad. See if it works for you with your app: :)

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <ProgressConstants.au3>
#include <Constants.au3>
#include <GuiEdit.au3>
#include <Date.au3>
#include <ButtonConstants.au3>

Global $fInterrupt = 0, $Button2, $Button3

gui1()
Func gui1()

    $Form1 = GUICreate("Form1", 615, 478, 192, 124)
    Global $Edit1 = GUICtrlCreateEdit("", 8, 16, 601, 289)
    GUICtrlSetData(-1, "Edit1")
    Global $Progress1 = GUICtrlCreateProgress(8, 320, 593, 33)
    Global $Progress2 = GUICtrlCreateProgress(8, 368, 601, 33)
    $Button1 = GUICtrlCreateButton("Start", 24, 432, 89, 25)
    $Button2 = GUICtrlCreateButton("next", 128, 432, 89, 25)
    $Button3 = GUICtrlCreateButton("Exit", 232, 432, 89, 25)
    GUISetState(@SW_SHOW)

    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE, $Button3
                exitprog()
            Case $Button1
                start()
        EndSwitch
    WEnd
EndFunc   ;==>gui1

Func start()
    $somefolder = FileSelectFolder("Select Encode Folder", "")
    $Afiles = _FileListToArray($somefolder)
    $sStdErr = ""
    $iTicksDuration = 0
    $iTicksTime = 0
    $ffmpeg = $somefolder & "\ffmpeg.exe"

    For $i = 1 To $Afiles[0]
        $file = $Afiles[$i]
        $hPid = Run("Notepad.exe") ; $ffmpeg & ' -i "' & $file & '" "' & StringTrimRight($file, 4) & '_output.mp4"', $somefolder, @SW_HIDE, 0x4)
        ; Get handle of window
        $hWnd = WinWaitActive("Untitled - Notepad") ; Adjust title to match the ffmpeg GUI
        
        ; Get a timestamp
        $nBegin = TimerInit()

        While 1
            $nMsg = GUIGetMsg()
            Switch $nMsg
                Case $GUI_EVENT_CLOSE, $Button3
                    exitprog()
                Case $Button2
                    WinActivate($hWnd)
                    WinWaitActive($hWnd)
                    Send("q")
            EndSwitch

            ; Do this every 500 ms
            If TimerDiff($nBegin) > 500 Then
                $sStdErr &= StderrRead($hPid)
                ;If @error Then ExitLoop
                GUICtrlSetData($Edit1, $sStdErr)
                If StringLen($sStdErr) > 0 Then
                    If Not $iTicksDuration Then $iTicksDuration = _GetDuration($sStdErr)
                    $iTicksTime = _GetTime($sStdErr)
                    If Not @error Then $sStdErr = ""
                    GUICtrlSetData($Progress1, $iTicksTime * 100 / $iTicksDuration)
                EndIf
                ; Reset the timer
                $nBegin = TimerInit()
            EndIf

        WEnd
        ProgressOff()
        GUICtrlSetData($Progress2, ($i / $Afiles[0]) * 100)
    Next
EndFunc   ;==>start

Func _GetDuration($sStdErr)
    If Not StringInStr($sStdErr, "Duration:") Then Return SetError(1, 0, 0)
    Local $aRegExp = StringRegExp($sStdErr, "(?i)Duration.+?([0-9:]+)", 3)
    If @error Or Not IsArray($aRegExp) Then Return SetError(1, 0, 0)
    Local $sTime = $aRegExp[UBound($aRegExp) - 1]
    Local $aTime = StringSplit($sTime, ":", 2)
    If @error Or Not IsArray($aTime) Then Return SetError(1, 0, 0)
    Return _TimeToTicks($aTime[0], $aTime[1], $aTime[2])
EndFunc   ;==>_GetDuration

Func _GetTime($sStdErr)
    If Not StringInStr($sStdErr, "time=") Then Return SetError(1, 0, 0)
    Local $aRegExp = StringRegExp($sStdErr, "(?i)time.+?([0-9:]+)", 3)
    If @error Or Not IsArray($aRegExp) Then Return SetError(1, 0, 0)
    Local $sTime = $aRegExp[UBound($aRegExp) - 1]
    Local $aTime = StringSplit($sTime, ":", 2)
    If @error Or Not IsArray($aTime) Then Return SetError(1, 0, 0)
    Return _TimeToTicks($aTime[0], $aTime[1], $aTime[2])
EndFunc   ;==>_GetTime

Func exitprog()
    ;If ProcessExists("ffmpeg.exe") Then
    ;   ProcessClose("ffmpeg.exe")
    If ProcessExists("Notepad.exe") Then
        ProcessClose("Notepad.exe")
    EndIf
    Exit
EndFunc   ;==>exitprog
Any luck? :huh:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

sorry, I didn't get much code time lately. Thanks for the help M23! I have been tweeking it, but still have some problems. the script works at first, but when I send "q" (thanks for that also) then the gui freezes and the script needs stopped. I am also encountering this along with sterrread problem if I hide the ffmpeg window. It is my fault for not mentioning that I intend to hide the window, but left it shown in the script because I knew the script I posted needed the process closed.

Share this post


Link to post
Share on other sites

ajenkins,

If you are hiding the GUI then you need to look at the Control* functions - use the Autoit Window Info tool to see if you can identify a control which you can action rather then sending the "q". :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

not the gui, but run("", , @sw_hide). Is that what you meant? is Control still what I need?

Share this post


Link to post
Share on other sites

is it helpful to say that the process being ran (ffmpeg) is a cli program that takes three commands while running (that I know of). "q" is cancel current job, {pause} is pause, and {enter} is resume. Thought this might help to identify the cercumstances without needing to know the program. Thanks again for the help !

Share this post


Link to post
Share on other sites

ajenkins,

 

is it helpful to say that the process being ran (ffmpeg) is a cli program

Yes, of course! We do not know every app that exists in detail. :rolleyes:

I take it that the app runs inside a DOS box? If so then do not hide the DOS box when you run the app and try this:

ControlSend("DOS_Box_Title", "", "", "q")
If that works then hide the DOS box and try again. ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

sorry, I confused myself. As you see above I was already using Run(@SW_HIDE), here is the code I have, just as M23 instructed.

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <ProgressConstants.au3>
#include <Constants.au3>
#include <GuiEdit.au3>
#include <Date.au3>
#include <ButtonConstants.au3>

Global $fInterrupt = 0, $Button2, $Button3

gui1()
Func gui1()

    $Form1 = GUICreate("Form1", 615, 478, 192, 124)
    Global $Edit1 = GUICtrlCreateEdit("", 8, 16, 601, 289)
    GUICtrlSetData(-1, "Edit1")
    Global $Progress1 = GUICtrlCreateProgress(8, 320, 593, 33)
    Global $Progress2 = GUICtrlCreateProgress(8, 368, 601, 33)
    $Button1 = GUICtrlCreateButton("Start", 24, 432, 89, 25)
    $Button2 = GUICtrlCreateButton("next", 128, 432, 89, 25)
    $Button3 = GUICtrlCreateButton("Exit", 232, 432, 89, 25)
    GUISetState(@SW_SHOW)

    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE, $Button3
                exitprog()
            Case $Button1
                start()
        EndSwitch
    WEnd
EndFunc   ;==>gui1

Func start()
    $somefolder = FileSelectFolder("Select Encode Folder", "")
    $Afiles = _FileListToArray($somefolder)
    $sStdErr = ""
    $iTicksDuration = 0
    $iTicksTime = 0
    $ffmpeg = $somefolder & "\ffmpeg.exe"

    For $i = 1 To $Afiles[0]
        $file = $Afiles[$i]
        $hPid = Run($ffmpeg & ' -i "' & $file & '" "' & StringTrimRight($file, 4) & '_output.mp4"', $somefolder, @SW_HIDE, 0x4)
        ; Get handle of window
        $hWnd = WinWaitActive($ffmpeg) ; Adjust title to match the ffmpeg GUI

        ; Get a timestamp
        $nBegin = TimerInit()

        While 1
            $nMsg = GUIGetMsg()
            Switch $nMsg
                Case $GUI_EVENT_CLOSE, $Button3
                    exitprog()
                Case $Button2
                    WinActivate($hWnd)
                    WinWaitActive($hWnd)
                    Send("q")
            EndSwitch

            ; Do this every 500 ms
            If TimerDiff($nBegin) > 500 Then
                $sStdErr &= StderrRead($hPid)
                ;If @error Then ExitLoop
                GUICtrlSetData($Edit1, $sStdErr)
                If StringLen($sStdErr) > 0 Then
                    If Not $iTicksDuration Then $iTicksDuration = _GetDuration($sStdErr)
                    $iTicksTime = _GetTime($sStdErr)
                    If Not @error Then $sStdErr = ""
                    GUICtrlSetData($Progress1, $iTicksTime * 100 / $iTicksDuration)
                EndIf
                ; Reset the timer
                $nBegin = TimerInit()
            EndIf

        WEnd
        ProgressOff()
        GUICtrlSetData($Progress2, ($i / $Afiles[0]) * 100)
    Next
EndFunc   ;==>start

Func _GetDuration($sStdErr)
    If Not StringInStr($sStdErr, "Duration:") Then Return SetError(1, 0, 0)
    Local $aRegExp = StringRegExp($sStdErr, "(?i)Duration.+?([0-9:]+)", 3)
    If @error Or Not IsArray($aRegExp) Then Return SetError(1, 0, 0)
    Local $sTime = $aRegExp[UBound($aRegExp) - 1]
    Local $aTime = StringSplit($sTime, ":", 2)
    If @error Or Not IsArray($aTime) Then Return SetError(1, 0, 0)
    Return _TimeToTicks($aTime[0], $aTime[1], $aTime[2])
EndFunc   ;==>_GetDuration

Func _GetTime($sStdErr)
    If Not StringInStr($sStdErr, "time=") Then Return SetError(1, 0, 0)
    Local $aRegExp = StringRegExp($sStdErr, "(?i)time.+?([0-9:]+)", 3)
    If @error Or Not IsArray($aRegExp) Then Return SetError(1, 0, 0)
    Local $sTime = $aRegExp[UBound($aRegExp) - 1]
    Local $aTime = StringSplit($sTime, ":", 2)
    If @error Or Not IsArray($aTime) Then Return SetError(1, 0, 0)
    Return _TimeToTicks($aTime[0], $aTime[1], $aTime[2])
EndFunc   ;==>_GetTime

Func exitprog()
    If ProcessExists("ffmpeg.exe") Then
       ProcessClose("ffmpeg.exe")

    EndIf
    Exit
EndFunc   ;==>exitprog

The script works as described above between @SW_HIDE and @SW_SHOW. any reason why the changes you made would break the sterrRead M23? I double checked, and it worked prior to the changes hidden or shown.

Share this post


Link to post
Share on other sites

sorry, you beat me. I'll try it and get back to you. Can I ask what time zone are you on? I don't usually get live contact on my time.

Share this post


Link to post
Share on other sites

ajenkins,

UK time - at present UTC (to be precise), or GMT (if you are old), or Z (if you are military). :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

M23,

not Z anymore, not old but most people I know in Japan say GMT+9.

ajenkins

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