Jump to content

Minimized to Tray Button


Kyou
 Share

Recommended Posts

I have a working code here. 

#include <GUIConstants.au3>
#include <Constants.au3>

Opt("GUIOnEventMode",1)

$title = "WINDOW"
$text=""
$fullTest = WinExistsExact($title, $text)
$PASSWORD = "PASS"
$retryCount = 0
$stop = 1  ;<<<<<<<<<<<<<<<<<<<<<<<<<

While 1
    if $retryCount > 0 then Exit
    $input = InputBox("Password Protected", "Enter the password to continue", "", "*")
    If @error Or $input <> $PASSWORD Then
        MsgBox(4096,"Error", "Incorrect Password")
        $retryCount = $retryCount + 1
    Else
        ;MsgBox(4096,"Success", "Password Accepted")
        ExitLoop
    EndIf
 Wend

If $fullTest = 1 Then
    ;MsgBox(0, "WINDOW", "Press Ok to continue")
    GUICreate("WINDOW", 241, 78)
    ;$label = GUICtrlCreateInput ("test", 10, 10, 50, 20)
    GuiSetOnEvent($GUI_EVENT_CLOSE,"Quit")
    $button = GUICtrlCreateButton ("Start",  18, 31, 100, 25)
    $button1 = GUICtrlCreateButton ("Hide",  128, 31, 91, 25) ; <----- THIS IS THE BUTTON
    GuiCtrlSetOnEvent($button,"DoScript")
    GUISetState (@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")  ;<<<<<<<<<<<<<<<<<<<<<
Else
    MsgBox(0, "WINDOW", "You need to run WINDOW client first.")
 EndIf

While 1
   Sleep(10)
Wend

Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
     If BitAND($wParam, 0x0000FFFF) =  $button Then
          $stop = not $stop
          If $stop = 0 Then GUICtrlSetData($button, "Stop")
          If $stop = 1 Then GUICtrlSetData($button, "Start")
     EndIf
     Return $GUI_RUNDEFMSG
EndFunc

Func WinExistsExact($title, $text)
    AutoItSetOption( "WinTitleMatchMode", $OPT_MATCHEXACT )
    $res = WinExists($title, $text)
    AutoItSetOption( "WinTitleMatchMode", $OPT_MATCHSTART )
    Return $res
EndFunc

Func DoScript()
   While 1
    For $i = 1 to 300
        Sleep (10)
        If $stop = 1 Then Return
       ; GuiCtrlSetData($label, $i)
    Next
    ControlSend ( $title, "", 0, "{F12}")
    $a = Random(300, 900, 1)
    For $i = 1 to $a
        Sleep (10)
        If $stop = 1 Then Return
    Next
    ControlSend ( $title, "", 0, "{Del}")
    $a = Random(100, 500, 1)
    For $i = 1 to $a
        Sleep (10)
        If $stop = 1 Then Return
        Next
   WEnd
EndFunc

Func Quit()
    Exit
 EndFunc

What I wanted to do is to make the 'Hide' button minimized the entire window when clicked and while it is on tray, there will be a menu if a user right clicked on it. Exactly what the code below should do.

#NoTrayIcon
#include <guiconstantsex.au3>
#include <constants.au3>
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)
; Create tray menu items and set the events
$About = TrayCreateItem("About")
TrayItemSetOnEvent($About, "_About")
TrayCreateItem("") ; Create a separator line.
$Exit = TrayCreateItem("Exit")
TrayItemSetOnEvent($Exit, "_Exit")
; Set the action if you left click on the tray icon
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "SpecialEvent")
; Show the menu if the icon is right clicked
TraySetClick(8)
Global $MainGui = GUICreate("TestGUI", 392, 316, -1, -1)
GUISetState()
;Test()
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_MINIMIZE
            ; Hide the GUI
            GUISetState(@SW_HIDE)
            ; Show the icon
   TraySetState(1)
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd
Func SpecialEvent()
    ; Show the GUI
    GUISetState(@SW_SHOW)
    GUISetState(@SW_RESTORE)
    ; Hide the icon
    TraySetState(2)
EndFunc   ;==>SpecialEvent
Func _About()
    MsgBox(0,0,"Test")
EndFunc
Func _Exit()
    Exit
EndFunc

My problem is I cannot integrate this code to the one I have. Can anyone help me with this? I would be very much thankful as I am just starting to learn.

Link to comment
Share on other sites

Hello
This can Help :

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
HotKeySet("{ESC}","_Exit")
$hWnd = GUICreate("", 400, 300, -1, -1, BitOR($WS_POPUPWINDOW,$WS_CLIPCHILDREN, $WS_CLIPSIBLINGS))
$Bt = GUICtrlCreateButton("Exit", 280, 250, 90, 30)
GUISetState(@SW_SHOW)
While 1
    $msg = GUIGetMsg()

        Switch $msg
            Case $Bt
                Exit
        EndSwitch

WEnd
Func _Exit()
    Exit
    EndFunc

 

Link to comment
Share on other sites

Hello
This can Help :

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
HotKeySet("{ESC}","_Exit")
$hWnd = GUICreate("", 400, 300, -1, -1, BitOR($WS_POPUPWINDOW,$WS_CLIPCHILDREN, $WS_CLIPSIBLINGS))
$Bt = GUICtrlCreateButton("Exit", 280, 250, 90, 30)
GUISetState(@SW_SHOW)
While 1
    $msg = GUIGetMsg()

        Switch $msg
            Case $Bt
                Exit
        EndSwitch

WEnd
Func _Exit()
    Exit
    EndFunc

 

Actually no but thanks for trying to help.

Link to comment
Share on other sites

  • Moderators

Kyou,

Take a look at this:

#include <GUIConstantsEx.au3>

; Prevent standard Windows events
Opt("GUIEventOptions", 1)

; Remove standard tray menu items
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)

; Create tray menu
Global $cTray_Show = TrayCreateItem("Show")
TrayItemSetOnEvent($cTray_Show, "_Show_GUI")
TrayCreateItem("")
Global $cTray_Exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_Exit")

; Get handle of hidden AutoIt GUI
$iParent_Win = WinGetHandle(AutoItWinGetTitle())

; Create GUI as child of Autoit GUI - no task bar icon
$hGUI = GUICreate("Test", 500, 500, Default, Default, Default, Default, $iParent_Win)
GUISetState()

While 1
    Switch GUIGetMsg()
        ; These events are just reported - not actioned

        Case $GUI_EVENT_CLOSE, $GUI_EVENT_MINIMIZE
            ; Hide GUI
            GUISetState(@SW_HIDE, $hGUI)
    EndSwitch

WEnd



Func _Show_GUI()
    GUISetState(@SW_SHOW, $hGUI)
EndFunc



Func _Exit()
    Exit
EndFunc

Any use?

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

 

Link to comment
Share on other sites

Kyou,

Take a look at this:

#include <GUIConstantsEx.au3>

; Prevent standard Windows events
Opt("GUIEventOptions", 1)

; Remove standard tray menu items
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)

; Create tray menu
Global $cTray_Show = TrayCreateItem("Show")
TrayItemSetOnEvent($cTray_Show, "_Show_GUI")
TrayCreateItem("")
Global $cTray_Exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_Exit")

; Get handle of hidden AutoIt GUI
$iParent_Win = WinGetHandle(AutoItWinGetTitle())

; Create GUI as child of Autoit GUI - no task bar icon
$hGUI = GUICreate("Test", 500, 500, Default, Default, Default, Default, $iParent_Win)
GUISetState()

While 1
    Switch GUIGetMsg()
        ; These events are just reported - not actioned

        Case $GUI_EVENT_CLOSE, $GUI_EVENT_MINIMIZE
            ; Hide GUI
            GUISetState(@SW_HIDE, $hGUI)
    EndSwitch

WEnd



Func _Show_GUI()
    GUISetState(@SW_SHOW, $hGUI)
EndFunc



Func _Exit()
    Exit
EndFunc

Any use?

M23

This is exactly what I wanted but how can I use "Hide" button here instead of the actual minimize button?

#include <GUIConstants.au3>
#include <Constants.au3>

Opt("GUIOnEventMode",1)

$title = "WINDOW"
$text=""
$fullTest = WinExistsExact($title, $text)
$PASSWORD = "PASS"
$retryCount = 0
$stop = 1  ;<<<<<<<<<<<<<<<<<<<<<<<<<

While 1
    if $retryCount > 0 then Exit
    $input = InputBox("Password Protected", "Enter the password to continue", "", "*")
    If @error Or $input <> $PASSWORD Then
        MsgBox(4096,"Error", "Incorrect Password")
        $retryCount = $retryCount + 1
    Else
        ;MsgBox(4096,"Success", "Password Accepted")
        ExitLoop
    EndIf
 Wend

If $fullTest = 1 Then
    ;MsgBox(0, "WINDOW", "Press Ok to continue")
    GUICreate("WINDOW", 241, 78)
    ;$label = GUICtrlCreateInput ("test", 10, 10, 50, 20)
    GuiSetOnEvent($GUI_EVENT_CLOSE,"Quit")
    $button = GUICtrlCreateButton ("Start",  18, 31, 100, 25)
    $button1 = GUICtrlCreateButton ("Hide",  128, 31, 91, 25) ; <----- THIS IS THE BUTTON
    GuiCtrlSetOnEvent($button,"DoScript")
    GUISetState (@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")  ;<<<<<<<<<<<<<<<<<<<<<
Else
    MsgBox(0, "WINDOW", "You need to run WINDOW client first.")
 EndIf

While 1
   Sleep(10)
Wend

Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
     If BitAND($wParam, 0x0000FFFF) =  $button Then
          $stop = not $stop
          If $stop = 0 Then GUICtrlSetData($button, "Stop")
          If $stop = 1 Then GUICtrlSetData($button, "Start")
     EndIf
     Return $GUI_RUNDEFMSG
EndFunc

Func WinExistsExact($title, $text)
    AutoItSetOption( "WinTitleMatchMode", $OPT_MATCHEXACT )
    $res = WinExists($title, $text)
    AutoItSetOption( "WinTitleMatchMode", $OPT_MATCHSTART )
    Return $res
EndFunc

Func DoScript()
   While 1
    For $i = 1 to 300
        Sleep (10)
        If $stop = 1 Then Return
       ; GuiCtrlSetData($label, $i)
    Next
    ControlSend ( $title, "", 0, "{F12}")
    $a = Random(300, 900, 1)
    For $i = 1 to $a
        Sleep (10)
        If $stop = 1 Then Return
    Next
    ControlSend ( $title, "", 0, "{Del}")
    $a = Random(100, 500, 1)
    For $i = 1 to $a
        Sleep (10)
        If $stop = 1 Then Return
        Next
   WEnd
EndFunc

Func Quit()
    Exit
 EndFunc

The minimize button should minimize the window in the task bar while the Hide button should minimize the window to tray.

Thanks in advance!

Link to comment
Share on other sites

  • Moderators

Kyou,

Firstly, when you reply, please use the "Reply to this topic" button at the top of the thread or the "Reply to this topic" editor at the bottom rather than the "Quote" button - I know what I wrote and it just pads the thread unnecessarily.

Just ad a "Hide" button to the GUI and then add its ControlID to the list of events in the Switch structure which will hide the GUI.

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

 

Link to comment
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
 Share

×
×
  • Create New...