Jump to content

Help with simple function for window toggling


Go to solution Solved by Melba23,

Recommended Posts

Posted

Hi!

I'm very stuck with this function.

I would like a function that when I press a certain hotkey minimizes the currently active window. When I press the same certain hotkey again I want the previously minimized window to maximize again.

So far I've got:

hotkeyset("{numpad1}", "_end")
hotkeyset("{numpad0}", "_mini")

while 1
   sleep(50)
   WEnd
   
Func _mini()
local $wintitle = wingettitle("[active]")
   if WinActive($wintitle) then
   Winsetstate($wintitle, "", @SW_MINIMIZE)
   Else
   Winsetstate($wintitle, "", @SW_MAXIMIZE)
   EndIf
   EndFunc

 Func _end()
      Exit
   EndFunc

However the local $wintitle = wingettitle("[active]") is incorrectly placed in the script such that the script always minimizes the currently active window (imagine I have several windows open) and of course no maximize. I simply can't work out the logic for this to work. 

  • Moderators
  • Solution
Posted

sackjarrow,

Store the handle of the GUI you minimized and then use it to restore:

HotKeySet("{numpad1}", "_end")
HotKeySet("{numpad0}", "_mini")

; Flag to hold the handle of the GUI
Global $hActive_Last = 0

While 1
    Sleep(10)
WEnd

Func _mini()
    ; Get current active handle
    Local $hActive_Curr = WinGetHandle("[ACTIVE]")
    ; If nothing minimised at present
    If $hActive_Last = 0 Then
        ; Minimise the GUI
        WinSetState($hActive_Curr, "", @SW_MINIMIZE)
        ; Store the handle
        $hActive_Last = $hActive_Curr
    Else
        ; Restore the GUI
        WinSetState($hActive_Last, "", @SW_RESTORE)
        ; Clear the flag
        $hActive_Last = 0
    EndIf
EndFunc   ;==>_mini

Func _end()
    Exit
EndFunc   ;==>_end
All clear? :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

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
×
×
  • Create New...