Jump to content

How to make Toast - New version 2 Aug 18


Melba23
 Share

Recommended Posts

Sorry if I ran you around for no gain. It just doesn't show on my system. Only other thing I thought of if you are on XP it may have "stay on top" for Taskbar. I hardly boot XP anymore. On W7 if you don't AutoHide it assumes Stay on Top I think. One of those mysteries. In any case, thanks for the toast. I don't know how to explain the discrepancy.

Link to comment
Share on other sites

  • Moderators

MilesAhead,

No need to apologise - always happy to look into one of my UDFs which does not appear to work correctly. And at least I can sleep easily at night knowing that you have a modified version which does work for you - no risk of you going Toastless! ;)

I got no further after the trip to and from the airport. If you ever resolve the problem, please let me know - I hate mysteries. :)

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

  • Moderators

[NEW VERSION] - 31 Dec 11

New - Toast location code rewritten. Location now correct when Classic display mode selected and if users reset the work area to place additonal toolbars above the TaskBar.

Thanks to jmon and MilesAhead for the reports - even if the latter had to write his own modified code! ;)

New UDF below and in the first post. :)

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

Correct me if I'm wrong but I think I've worked out the issue MilesAhead is having, what version are you using of AutoIt? Because I've looked through the previous posts and I can't see any mention of it. The issue I believe to be the problem is this >>

Melba23:

$tWorkArea = DllStructCreate("struct;long Left;long Top;long Right;long Bottom;endstruct"); Only works in the latest version of AutoIt, but it's the correct approach for the latest version.

MilesAhead:

$tWorkArea = DllStructCreate($tagRECT) ;  Not dependent on any version as it's using a constant included with that particular version.

I had an old copy of V3.3.6.1 on my old XP machine and this is how I came across the issue, if I substitute Melba's structure with $tagRECT then it works as expected.

Edited by guinness

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

  • Moderators

guinness,

I just booted up a 3.3.6.1 system and confirmed your diagnosis - all my work on this UDF lately has been with the then-current beta or 3.3.8.0. I think you have it again - are you looking for a second career as a detective? ;)

I have amended the _Toast_Locate function in the UDF to check for the AutoIt version and use the relevant struct string. For me it now works with 3.3.6.1 and 3.3.8.0 - can you please confirm? :)

#region ; Header
    #include-once

    ; #INDEX# ============================================================================================================
    ; Title .........: Toast
    ; AutoIt Version : 3.3.2.0 - uses AdlibRegister/Unregister
    ; Language ......: English
    ; Description ...: Show and hides slice messages from the systray in user defined colours and fonts
    ; Author(s) .....: Melba23 - using some code from guinness and MilesAhead in _Toast_Locate
    ; ====================================================================================================================

    ;#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6

    ; #INCLUDES# =========================================================================================================
    #include <StringSize.au3>

    ; #GLOBAL VARIABLES# =================================================================================================
    Global $iDef_Toast_Font_Size = _Toast_GetDefFont(0)
    Global $sDef_Toast_Font_Name = _Toast_GetDefFont(1)

    Global $hToast_Handle = 0
    Global $hToast_Close_X = 9999
    Global $iToast_Move = 0
    Global $iToast_Style = 1 ; $SS_CENTER
    Global $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 8) ; $COLOR_WINDOWTEXT = 8
    Global $iToast_Header_BkCol = $aRet[0]
    $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 5) ; $COLOR_WINDOW = 5
    Global $iToast_Header_Col = $aRet[0]
    Global $iToast_Header_Bold = 0
    Global $iToast_Message_BkCol = $iToast_Header_Col
    Global $iToast_Message_Col = $iToast_Header_BkCol
    Global $iToast_Font_Size = $iDef_Toast_Font_Size
    Global $sToast_Font_Name = $sDef_Toast_Font_Name
    Global $iToast_Timer = 0
    Global $iToast_Start = 0
    Global $fToast_Close = False

    ; #CURRENT# ==========================================================================================================
    ; _Toast_Set:  Sets text justification and optionally colours and font, for _Toast_Show function calls
    ; _Toast_Show: Shows a slice message from the systray
    ; _Toast_Hide: Hides a slice message from the systray
    ; ====================================================================================================================

    ; #INTERNAL_USE_ONLY#=================================================================================================
    ; _Toast_Locate:        Find Systray and determine Toast start position and movement direction
    ; _Toast_Timer_Check:   Checks whether Toast has timed out or closure [X] clicked
    ; _Toast_WM_EVENTS:     Message handler to check if closure [X] clicked
    ; _Toast_GetDefFont: Determine system default MsgBox font and size
    ; ====================================================================================================================
#endregion ; Header
#region ; Functions
    ; #FUNCTION# =========================================================================================================
    ; Name...........: _Toast_Set
    ; Description ...: Sets text justification and optionally colours and font, for _Toast_Show function calls
    ; Syntax.........: _Toast_Set($vJust, [$iHdr_BkCol, [$iHdr_Col, [$iMsg_BkCol, [$iMsg_Col, [$sFont_Size, [$iFont_Name]]]]]])
    ; Parameters ....: $vJust     - 0 = Left justified, 1 = Centred (Default), 2 = Right justified
    ;                                Can use $SS_LEFT, $SS_CENTER, $SS_RIGHT
    ;                                + 4 = Header text in bold
    ;                       >>>>>    Setting this parameter to' Default' will reset ALL parameters to default values     <<<<<
    ;                       >>>>>    All optional parameters default to system MsgBox default values                     <<<<<
    ;                  $iHdr_BkCol - [Optional] The colour for the title bar background
    ;                  $iHdr_Col   - [Optional] The colour for the title bar text
    ;                  $iMsg_BkCol - [Optional] The colour for the message background
    ;                  $iMsg_Col   - [Optional] The colour for the message text
    ;                                Omitting a colour parameter or setting it to -1 leaves it unchanged
    ;                                Setting a colour parameter to Default resets the system colour
    ;                  $iFont_Size - [Optional] The font size in points to use for the Toast
    ;                  $sFont_Name - [Optional] The font to use for the Toast
    ;                       >>>>>    Omitting a font parameter, setting size to -1 or name to "" leaves it unchanged     <<<<<
    ;                       >>>>>    Setting a font parameter to Default resets the system message box font or size      <<<<<
    ; Requirement(s).: v3.3.2.0 or higher - AdlibRegister/Unregister used in _Toast_Show
    ; Return values .: Success - Returns 1
    ;                  Failure - Returns 0 and sets @error to 1 with @extended set to parameter index number
    ; Author ........: Melba23
    ; Example........; Yes
    ;=====================================================================================================================

    Func _Toast_Set($vJust, $iHdr_BkCol = -1, $iHdr_Col = -1, $iMsg_BkCol = -1, $iMsg_Col = -1, $iFont_Size = -1, $sFont_Name = "")

        ; Set parameters
        Switch $vJust
            Case Default
                $iToast_Style = 1; $SS_CENTER
                $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 8) ; $COLOR_WINDOWTEXT = 8
                $iToast_Header_BkCol = $aRet[0]
                $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 5) ; $COLOR_WINDOW = 5
                $iToast_Header_Col = $aRet[0]
                $iToast_Message_BkCol = $iToast_Header_Col
                $iToast_Message_Col = $iToast_Header_BkCol
                $sToast_Font_Name = $sDef_Toast_Font_Name
                $iToast_Font_Size = $iDef_Toast_Font_Size
                Return
            Case 0, 1, 2, 4, 5, 6
                $iToast_Style = $vJust
            Case -1
                ; Do nothing
            Case Else
                Return SetError(1, 1, 0)
        EndSwitch

        Switch $iHdr_BkCol
            Case Default
                $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 8) ; $COLOR_WINDOWTEXT = 8
                $iToast_Header_BkCol = $aRet[0]
            Case 0 To 0xFFFFFF
                $iToast_Header_BkCol = Int($iHdr_BkCol)
            Case -1
                ; Do nothing
            Case Else
                Return SetError(1, 2, 0)
        EndSwitch

        Switch $iHdr_Col
            Case Default
                $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 5) ; $COLOR_WINDOW = 5
                $iToast_Header_Col = $aRet[0]
            Case 0 To 0xFFFFFF
                $iToast_Header_Col = Int($iHdr_Col)
            Case -1
                ; Do nothing
            Case Else
                Return SetError(1, 3, 0)
        EndSwitch

        Switch $iMsg_BkCol
            Case Default
                $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 5) ; $COLOR_WINDOW = 5
                $iToast_Message_BkCol = $aRet[0]
            Case 0 To 0xFFFFFF
                $iToast_Message_BkCol = Int($iMsg_BkCol)
            Case -1
                ; Do nothing
            Case Else
                Return SetError(1, 4, 0)
        EndSwitch

        Switch $iMsg_Col
            Case Default
                $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 8) ; $COLOR_WINDOWTEXT = 8
                $iToast_Message_Col = $aRet[0]
            Case 0 To 0xFFFFFF
                $iToast_Message_Col = Int($iMsg_Col)
            Case -1
                ; Do nothing
            Case Else
                Return SetError(1, 5, 0)
        EndSwitch

        Switch $iFont_Size
            Case Default
                $iToast_Font_Size = $iDef_Toast_Font_Size
            Case 8 To 72
                $iToast_Font_Size = Int($iFont_Size)
            Case -1
                ; Do nothing
            Case Else
                Return SetError(1, 6, 0)
        EndSwitch

        Switch $sFont_Name
            Case Default
                $sToast_Font_Name = $sDef_Toast_Font_Name
            Case ""
                ; Do nothing
            Case Else
                If IsString($sFont_Name) Then
                    $sToast_Font_Name = $sFont_Name
                Else
                    Return SetError(1, 7, 0)
                EndIf
        EndSwitch

        Return 1

    EndFunc   ;==>_Toast_Set

    ; #FUNCTION# =========================================================================================================
    ; Name...........: _Toast_Show
    ; Description ...: Shows a slice message from the systray
    ; Syntax.........: _Toast_Show($vIcon, $sTitle, $sMessage, [$iDelay [, $fWait [, $fRaw]]])
    ; Parameters ....: $vIcon    - 0 - No icon, 8 - UAC, 16 - Stop, 32 - Query, 48 - Exclamation, 64 - Information
    ;                              The $MB_ICON constant can also be used for the last 4 above
    ;                              If set to the name of an exe, the main icon of that exe will be displayed
    ;                              Any other value returns -1, error 1
    ;                  $sTitle   - Text to display on Title bar
    ;                  $sMessage - Text to display in Toast body
    ;                  $iDelay   - The delay in seconds before the Toast retracts or script continues (Default = 0)
    ;                              If negative, an [X] is added to the title bar. Clicking [X] retracts/continues immediately
    ;                  $fWait    - True  - Script waits for delay time before continuing and Toast remains visible
    ;                              False - Script continues and Toast retracts automatically after delay time
    ;                  $fRaw     - True  - Message is not wrapped and Toast expands to show full width
    ;                            - False - Message is wrapped if over max preset Toast width
    ; Requirement(s).: v3.3.1.5 or higher - AdlibRegister/Unregister used in _Toast_Show
    ; Return values .: Success: Returns 2-element array: [Toast width, Toast height]
    ;                  Failure: Returns -1 and sets @error as follows:
    ;                           1 = Toast GUI creation failed
    ;                           2 = Taskbar not found
    ;                           4 = When using Raw, the Toast is too wide for the display
    ;                           3 = StringSize error
    ; Author ........: Melba23, based on some original code by GioVit for the Toast
    ; Notes .........; Any visible Toast is retracted by a subsequent _Toast_Hide or _Toast_Show, or clicking a visible [X]
    ; Example........; Yes
    ;=====================================================================================================================

    Func _Toast_Show($vIcon, $sTitle, $sMessage, $iDelay = 0, $fWait = True, $fRaw = False)

        ; Store current GUI mode and set Message mode
        Local $nOldOpt = Opt('GUIOnEventMode', 0)

        ; Retract any Toast already in place
        If $hToast_Handle <> 0 Then _Toast_Hide()

        ; Reset non-reacting Close [X] ControlID
        $hToast_Close_X = 9999

        ; Set default auto-sizing Toast widths
        Local $iToast_Width_max = 500
        Local $iToast_Width_min = 150

        ; Check for icon
        Local $iIcon_Style = 0
        Local $iIcon_Reduction = 50
        Local $sDLL = "user32.dll"
        If StringIsDigit($vIcon) Then
            Switch $vIcon
                Case 0
                    $iIcon_Reduction = 0
                Case 8
                    $sDLL = "imageres.dll"
                    $iIcon_Style = 78
                Case 16 ; Stop
                    $iIcon_Style = -4
                Case 32 ; Query
                    $iIcon_Style = -3
                Case 48 ; Exclam
                    $iIcon_Style = -2
                Case 64 ; Info
                    $iIcon_Style = -5
                Case Else
                    $nOldOpt = Opt('GUIOnEventMode', $nOldOpt)
                    Return SetError(1, 0, -1)
            EndSwitch
        Else
            $sDLL = $vIcon
            $iIcon_Style = 0
        EndIf

        ; Determine max message width
        Local $iMax_Label_Width = $iToast_Width_max - 20 - $iIcon_Reduction
        If $fRaw = True Then $iMax_Label_Width = 0

        ; Get message label size
        Local $aLabel_Pos = _StringSize($sMessage, $iToast_Font_Size, Default, Default, $sToast_Font_Name, $iMax_Label_Width)
        If @error Then
            $nOldOpt = Opt('GUIOnEventMode', $nOldOpt)
            Return SetError(3, 0, -1)
        EndIf

        ; Reset text to match rectangle
        $sMessage = $aLabel_Pos[0]

        ;Set line height for this font
        Local $iLine_Height = $aLabel_Pos[1]

        ; Set label size
        Local $iLabelwidth = $aLabel_Pos[2]
        Local $iLabelheight = $aLabel_Pos[3]

        ; Set Toast size
        Local $iToast_Width = $iLabelwidth + 20 + $iIcon_Reduction
        ; Check if Toast will fit on screen
        If $iToast_Width > @DesktopWidth - 20 Then
            $nOldOpt = Opt('GUIOnEventMode', $nOldOpt)
            Return SetError(4, 0, -1)
        EndIf
        ; Increase if below min size
        If $iToast_Width < $iToast_Width_min + $iIcon_Reduction Then
            $iToast_Width = $iToast_Width_min + $iIcon_Reduction
            $iLabelwidth = $iToast_Width_min - 20
        EndIf

        ; Set title bar height - with minimum for [X]
        Local $iTitle_Height = 0
        If $sTitle = "" Then
            If $iDelay < 0 Then $iTitle_Height = 6
        Else
            $iTitle_Height = $iLine_Height + 2
            If $iDelay < 0 Then
                If $iTitle_Height < 17 Then $iTitle_Height = 17
            EndIf
        EndIf

        ; Set Toast height as label height + title bar + bottom margin
        Local $iToast_Height = $iLabelheight + $iTitle_Height + 20
        ; Ensure enough room for icon if displayed
        If $iIcon_Reduction Then
            If $iToast_Height < $iTitle_Height + 42 Then $iToast_Height = $iTitle_Height + 47
        EndIf

        ; Get Toast starting position and direction
        Local $aToast_Data = _Toast_Locate($iToast_Width, $iToast_Height)

        ; Create Toast slice with $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW style and $WS_EX_TOPMOST extended style
        $hToast_Handle = GUICreate("", $iToast_Width, $iToast_Height, $aToast_Data[0], $aToast_Data[1], 0x80880000, BitOR(0x00000080, 0x00000008))
        If @error Then
            $nOldOpt = Opt('GUIOnEventMode', $nOldOpt)
            Return SetError(1, 0, -1)
        EndIf
        GUISetFont($iToast_Font_Size, Default, Default, $sToast_Font_Name)
        GUISetBkColor($iToast_Message_BkCol)

        ; Set centring parameter
        Local $iLabel_Style = 0 ; $SS_LEFT
        If BitAND($iToast_Style, 1) = 1 Then
            $iLabel_Style = 1 ; $SS_CENTER
        ElseIf BitAND($iToast_Style, 2) = 2 Then
            $iLabel_Style = 2 ; $SS_RIGHT
        EndIf

        ; Check installed fonts
        Local $sX_Font = "WingDings"
        Local $sX_Char = "x"
        Local $i = 1
        While 1
            Local $sInstalled_Font = RegEnumVal("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionFonts", $i)
            If @error Then ExitLoop
            If StringInStr($sInstalled_Font, "WingDings 2") Then
                $sX_Font = "WingDings 2"
                $sX_Char = "T"
            EndIf
            $i += 1
        WEnd

        ; Create title bar if required
        If $sTitle <> "" Then

            ; Create disabled background strip
            GUICtrlCreateLabel("", 0, 0, $iToast_Width, $iTitle_Height)
            GUICtrlSetBkColor(-1, $iToast_Header_BkCol)
            GUICtrlSetState(-1, 128) ; $GUI_DISABLE

            ; Set title bar width to offset text
            Local $iTitle_Width = $iToast_Width - 10

            ; Create closure [X] if needed
            If $iDelay < 0 Then
                ; Create [X]
                Local $iX_YCoord = Int(($iTitle_Height - 17) / 2)
                $hToast_Close_X = GUICtrlCreateLabel($sX_Char, $iToast_Width - 18, $iX_YCoord, 17, 17)
                GUICtrlSetFont(-1, 14, Default, Default, $sX_Font)
                GUICtrlSetBkColor(-1, -2) ; $GUI_BKCOLOR_TRANSPARENT
                GUICtrlSetColor(-1, $iToast_Header_Col)
                ; Reduce title bar width to allow [X] to activate
                $iTitle_Width -= 18
            EndIf

            ; Create Title label with bold text, centred vertically in case bar is higher than line
            GUICtrlCreateLabel($sTitle, 10, 0, $iTitle_Width, $iTitle_Height, 0x0200) ; $SS_CENTERIMAGE
            GUICtrlSetBkColor(-1, $iToast_Header_BkCol)
            GUICtrlSetColor(-1, $iToast_Header_Col)
            If BitAND($iToast_Style, 4) = 4 Then GUICtrlSetFont(-1, $iToast_Font_Size, 600)

        Else

            If $iDelay < 0 Then
                ; Only need [X]
                $hToast_Close_X = GUICtrlCreateLabel($sX_Char, $iToast_Width - 18, 0, 17, 17)
                GUICtrlSetFont(-1, 14, Default, Default, $sX_Font)
                GUICtrlSetBkColor(-1, -2) ; $GUI_BKCOLOR_TRANSPARENT
                GUICtrlSetColor(-1, $iToast_Message_Col)
            EndIf

        EndIf

        ; Create icon
        If $iIcon_Reduction Then GUICtrlCreateIcon($sDLL, $iIcon_Style, 10, 10 + $iTitle_Height)

        ; Create Message label
        GUICtrlCreateLabel($sMessage, 10 + $iIcon_Reduction, 10 + $iTitle_Height, $iLabelwidth, $iLabelheight)
        GUICtrlSetStyle(-1, $iLabel_Style)
        If $iToast_Message_Col <> Default Then GUICtrlSetColor(-1, $iToast_Message_Col)

        ; Slide Toast Slice into view from behind systray and activate
        DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hToast_Handle, "int", 1000, "long", $aToast_Data[2])

        ; Activate Toast without stealing focus
        GUISetState(@SW_SHOWNOACTIVATE, $hToast_Handle)

        ; If script is to pause
        If $fWait = True Then

            ; Begin timeout counter
            Local $iTimeout_Begin = TimerInit()

            ; Wait for timeout or closure
            While 1
                If GUIGetMsg() = $hToast_Close_X Or TimerDiff($iTimeout_Begin) / 1000 >= Abs($iDelay) Then ExitLoop
            WEnd

            ; If script is to continue and delay has been set
        ElseIf Abs($iDelay) > 0 Then

            ; Store timer info
            $iToast_Timer = Abs($iDelay * 1000)
            $iToast_Start = TimerInit()

            ; Register Adlib function to run timer
            AdlibRegister("_Toast_Timer_Check", 100)
            ; Register message handler to check for [X] click
            GUIRegisterMsg(0x0021, "_Toast_WM_EVENTS") ; $WM_MOUSEACTIVATE

        EndIf

        ; Reset original mode
        $nOldOpt = Opt('GUIOnEventMode', $nOldOpt)

        ; Create array to return Toast dimensions
        Local $aToast_Data[3] = [$iToast_Width, $iToast_Height, $iLine_Height]

        Return $aToast_Data

    EndFunc   ;==>_Toast_Show

    ; #FUNCTION# ========================================================================================================
    ; Name...........: _Toast_Hide
    ; Description ...: Hides a slice message from the systray
    ; Syntax.........: _Toast_Hide()
    ; Requirement(s).: v3.3.1.5 or higher - AdlibRegister used in _Toast_Show
    ; Return values .: Success: Returns 0
    ;                  Failure: If Toast does not exist returns -1 and sets @error to 1
    ; Author ........: Melba23
    ; Example........; Yes
    ;=====================================================================================================================

    Func _Toast_Hide()

        ; If no Toast to hide, return
        If $hToast_Handle = 0 Then Return SetError(1, 0, -1)

        ; Slide Toast back behind systray
        DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hToast_Handle, "int", 500, "long", $iToast_Move)

        ; Delete Toast slice
        GUIDelete($hToast_Handle)

        ; Set flag for "no Toast"
        $hToast_Handle = 0

    EndFunc   ;==>_Toast_Hide
#endregion ; Functions
#region ; Internal
    ; #INTERNAL_USE_ONLY#============================================================================================================
    ; Name...........: _Toast_Locate
    ; Description ...: Find Systray and determine Toast start position and movement direction
    ; Syntax ........: _Toast_Locate($iToast_Width, $iToast_Height)
    ; Parameters ....: $iToast_Width  - required width of slice
    ;                  $iToast_Height - required height of slice
    ; Author ........: Melba23 - using some code from guinness and MilesAhead
    ; Modified.......:
    ; Remarks .......: This function is used internally by _Toast_Show
    ; ===============================================================================================================================
    Func _Toast_Locate($iToast_Width, $iToast_Height)

        Local $tWorkArea

        ; Define return array
        Local $aToast_Data[3]
        ; Determine which struct syntax to use to use
        If @AutoItVersion < "3.3.8.0" Then
            $tWorkArea = DllStructCreate("long Left;long Top;long Right;long Bottom")
        Else
            $tWorkArea = DllStructCreate("struct;long Left;long Top;long Right;long Bottom;endstruct")
        EndIf

        ; Check if Taskbar is hidden
        Local $aRet = DllCall("shell32.dll", "uint", "SHAppBarMessage", "dword", 0x00000004, "ptr*", 0) ; $ABM_GETSTATE
        If BitAND($aRet[0], 0x01) Then

            ; Find hidden taskbar
            Local $iPrevMode = Opt("WinTitleMatchMode", 4)
            Local $aTray_Pos = WinGetPos("[CLASS:Shell_TrayWnd]")
            Opt("WinTitleMatchMode", $iPrevMode)
            ; If error in finding systray
            If Not IsArray($aTray_Pos) Then Return SetError(2, 0, -1)

            ; Determine direction of Toast motion and starting position
            If $aTray_Pos[1] > 0 Then
                $iToast_Move = 0x00050004 ; $AW_SLIDE_OUT_BOTTOM
                $aToast_Data[0] = @DesktopWidth - $iToast_Width - 10
                $aToast_Data[1] = $aTray_Pos[1] - $iToast_Height - 2
                $aToast_Data[2] = 0x00040008 ; $AW_SLIDE_IN_BOTTOM
            Elseif $aTray_Pos[0] > 0 Then
                $iToast_Move = 0x00050001 ; $AW_SLIDE_OUT_RIGHT
                $aToast_Data[0] = $aTray_Pos[0] - $iToast_Width -2
                $aToast_Data[1] = @DesktopHeight - $iToast_Height - 10
                $aToast_Data[2] = 0x00040002 ; $AW_SLIDE_IN_RIGHT
            ElseIf $aTray_Pos[2] > @DesktopWidth - 70 Then
                $iToast_Move = 0x00050008 ; $AW_SLIDE_OUT_TOP
                $aToast_Data[0] = @DesktopWidth - $iToast_Width - 10
                $aToast_Data[1] = $aTray_Pos[1] + $aTray_Pos[3]
                $aToast_Data[2] = 0x00040004 ; $AW_SLIDE_IN_TOP
            ElseIf $aTray_Pos[3] >= @DesktopHeight Then
                $iToast_Move = 0x00050002 ; $AW_SLIDE_OUT_LEFT
                $aToast_Data[0] = $aTray_Pos[0] + $aTray_Pos[2]
                $aToast_Data[1] = @DesktopHeight - $iToast_Height - 10
                $aToast_Data[2] = 0x00040001 ; $AW_SLIDE_IN_LEFT
            EndIf

        Else

            ; Determine available work area ; $SPI_GETWORKAREA = 48
            DllCall("user32.dll", "bool", "SystemParametersInfoW", "uint", 48, "uint", 0, "ptr", DllStructGetPtr($tWorkArea), "uint", 0)
            If @error Then Return SetError(2, 0, -1)
            Local $aWorkArea[4] = [DllStructGetData($tWorkArea, "Left"), DllStructGetData($tWorkArea, "Top"), _
                    DllStructGetData($tWorkArea, "Right"), DllStructGetData($tWorkArea, "Bottom")]

            ; Determine direction of Toast motion and starting position
            If $aWorkArea[3] <> @DesktopHeight Then
                $iToast_Move = 0x00050004 ; $AW_SLIDE_OUT_BOTTOM
                $aToast_Data[0] = @DesktopWidth - $iToast_Width - 10
                $aToast_Data[1] = $aWorkArea[3] - $iToast_Height - 2
                $aToast_Data[2] = 0x00040008 ; $AW_SLIDE_IN_BOTTOM
            ElseIf $aWorkArea[2] <> @DesktopWidth Then
                $iToast_Move = 0x00050001 ; $AW_SLIDE_OUT_RIGHT
                $aToast_Data[0] = $aWorkArea[2] - $iToast_Width - 2
                $aToast_Data[1] = @DesktopHeight - $iToast_Height - 10
                $aToast_Data[2] = 0x00040002 ; $AW_SLIDE_IN_RIGHT
            ElseIf $aWorkArea[1] <> 0 Then
                $iToast_Move = 0x00050008 ; $AW_SLIDE_OUT_TOP
                $aToast_Data[0] = @DesktopWidth - $iToast_Width - 10
                $aToast_Data[1] = $aWorkArea[1]
                $aToast_Data[2] = 0x00040004 ; $AW_SLIDE_IN_TOP
            ElseIf $aWorkArea[0] <> 0 Then
                $iToast_Move = 0x00050002 ; $AW_SLIDE_OUT_LEFT
                $aToast_Data[0] = $aWorkArea[0]
                $aToast_Data[1] = @DesktopHeight - $iToast_Height - 10
                $aToast_Data[2] = 0x00040001 ; $AW_SLIDE_IN_LEFT
            EndIf

        EndIf

        Return $aToast_Data

    EndFunc   ;==>_Toast_Locate

    ; #INTERNAL_USE_ONLY#============================================================================================================
    ; Name...........: _Toast_Timer_Check
    ; Description ...: Checks whether Toast has timed out or closure [X] clicked
    ; Syntax ........: _Toast_Locate($iToast_Width, $iToast_Height)
    ; Author ........: Melba23
    ; Modified.......:
    ; Remarks .......: This function is used internally by _Toast_Show if the Wait parameter is set to False
    ; ===============================================================================================================================
    Func _Toast_Timer_Check()

        ; Return if timeout not elapsed and [X] not clicked
        If TimerDiff($iToast_Start) < $iToast_Timer And $fToast_Close = False Then Return

        ; Unregister message handler
        GUIRegisterMsg(0x0021, "") ; $WM_MOUSEACTIVATE
        ; Unregister this function
        AdlibUnRegister("_Toast_Timer_Check")
        ; Reset flag
        $fToast_Close = False
        ; Retract slice
        _Toast_Hide()

    EndFunc   ;==>_Toast_Timer_Check

    ; #INTERNAL_USE_ONLY#============================================================================================================
    ; Name...........: _Toast_WM_EVENTS
    ; Description ...: Message handler to check if closure [X] clicked
    ; Author ........: Melba23
    ; Modified.......:
    ; Remarks .......: This function is used internally by _Toast_Show if the Wait parameter is set to False
    ; ===============================================================================================================================
    Func _Toast_WM_EVENTS($hWnd, $Msg, $wParam, $lParam)

        #forceref $wParam, $lParam
        If $hWnd = $hToast_Handle Then
            If $Msg = 0x0021 Then ; $WM_MOUSEACTIVATE
                ; Check mouse position
                Local $aPos = GUIGetCursorInfo($hToast_Handle)
                If $aPos[4] = $hToast_Close_X Then $fToast_Close = True
            EndIf
        EndIf
        Return 'GUI_RUNDEFMSG'

    EndFunc   ;==>_Toast_WM_EVENTS

    ; #INTERNAL_USE_ONLY#============================================================================================================
    ; Name...........: _Toast_GetDefFont
    ; Description ...: Determine system default MsgBox font and size
    ; Syntax ........: _Toast_GetDefFont($iData)
    ; Parameters ....: $iData - 0 = Font point size, 1 = Font name
    ; Author ........: Melba23
    ; Modified.......:
    ; Remarks .......: This function is used internally by _Toast functions
    ; ===============================================================================================================================
    Func _Toast_GetDefFont($iData)

        ; Get default system font data
        Local $tNONCLIENTMETRICS = DllStructCreate("uint;int;int;int;int;int;byte[60];int;int;byte[60];int;int;byte[60];byte[60];byte[60]")
        DllStructSetData($tNONCLIENTMETRICS, 1, DllStructGetSize($tNONCLIENTMETRICS))
        DllCall("user32.dll", "int", "SystemParametersInfo", "int", 41, "int", DllStructGetSize($tNONCLIENTMETRICS), "ptr", DllStructGetPtr($tNONCLIENTMETRICS), "int", 0)
        ; Read font data for MsgBox font
        Local $tLOGFONT = DllStructCreate("long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32]", DllStructGetPtr($tNONCLIENTMETRICS, 15))
        Switch $iData
            Case 0
                ; Font size as integer
                Return Int((Abs(DllStructGetData($tLOGFONT, 1)) + 1) * .75)
            Case 1
                ; Font name
                Return DllStructGetData($tLOGFONT, 14)
        EndSwitch

    EndFunc   ;==>_Toast_GetDefFont
#endregion ; Internal

If it does work for you as well I will re-release it ASAP - and then can you please remove the last line of your post above. :D

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

That workaround works fine. How I found the problem was pretty quick but pure chance that I happened to test on an old version of AutoIt. I think it's a good lesson to learn, if you have a problem always specify the system details and version of AutoIt you're using. :)

Edited by guinness

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

  • Moderators

guinness,

Thanks - new release coming up. Can you remove the 3.3.8.0 only warning you added in your post #125 above, please. :)

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

Done.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

  • Moderators

[NEW VERSION] - 31 Dec 11 - version 2

New - Toast location code rewritten. Location now correct when Classic display mode selected and if users reset the work area to place additonal toolbars above the TaskBar.

Thanks to jmon and MilesAhead for the reports - and guinness for spotting the problem both times! ;)

New UDF in the first post. :)

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

Hi. I just tried out the new code. The bottom line of the toast looks correct. But the right edge is about 10 pixels removed from the right edge of the screen when the Taskbar is on the bottom. Looking through the 2 files I see on my changes I changed "$aToast_Data[0] = @DesktopWidth - $iToast_Width - 10" to "$aToast_Data[0] = @DesktopWidth - $iToast_Width" and similar adjustments for the various positions.

Don't know why there's a difference. But anyway, looks like you found the issue. :)

edit: I'm updating to latest AutoIt. Tried the compile again. Got the same issue with the 10 pixel gap. I'm using the 'x' in the corner of toast. Maybe that's related to it.

Basically now I'm chasing down all calls to Int() that check for @error generally. That should keep me busy for the holiday. ;)

Edited by MilesAhead
Link to comment
Share on other sites

  • Moderators

MilesAhead,

the right edge is about 10 pixels removed from the right edge of the screen when the Taskbar is on the bottom

That is by design - if you want to get it "Close to the Edge" (great album that :)) then you need to adjust the coordinates as you did before.

Delighted we, or rather guinness, got to the bottom of it. Happy New Year! ;)

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

  • Moderators

Dizzy,

Sorry, no. :)

If you want that level of user interaction, take a look at my ExtMsgBox UDF. ;)

M23

Edit: I just remembered that I have already shown how to add buttons to a Toast here. So you should have read the thread more carefully and I should have recalled it sooner - about 15-all I would say! :D

Edited by Melba23

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

Edit: I just remembered that I have already shown how to add buttons to a Toast here. So you should have read the thread more carefully and I should have recalled it sooner - about 15-all I would say!

I hate it when that happens. It's like sometimes I'm searching trying different terms, not having much luck. Then I finally get a hit that looks relevant and it turns out to be one of my own posts from 6 months ago when I knew less about the subject than I do now!!

btw you a tennis fan? Australian Open should be cranking up in a few weeks :)

Link to comment
Share on other sites

  • 1 month later...

I am trying to put up a toast and leave it there until something happens. Is this possible?

Here is what currently have

do
_Toast_Show(48, "test", "test")
until FileExists("C:test.txt")

this works however the toast keeps going show / hide. Is there a way to detect if toast is in the show state?

EDIT: I was able to do something similar using tooltips

do
if not WinGetHandle ("This is a Test") Then ToolTip("This is a Test","","","Test")
until FileExists("C:test.txt")
Edited by myk3
Link to comment
Share on other sites

  • Moderators

myk3,

No need to use _Toast_Show in the loop: ;)

#include <Toast.au3>

; Show the Toast - the default delay of 0 means it stays out until you retract it
_Toast_Show(0, "Title", "Text")

; Now wait for your file to appear
Do
    Sleep(10)
Until FileExists("C:test.txt")

; And hide the Toast when it does
_Toast_Hide()

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

 

Link to comment
Share on other sites

myk3,

No need to use _Toast_Show in the loop: ;)

#include <Toast.au3>

; Show the Toast - the default delay of 0 means it stays out until you retract it
_Toast_Show(0, "Title", "Text")

; Now wait for your file to appear
Do
    Sleep(10)
Until FileExists("C:test.txt")

; And hide the Toast when it does
_Toast_Hide()

All clear? :)

M23

works great thanks... It was pretty easy i feel stupid now..
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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...