Anzeige in Symbolleiste

  • Ist es mit AutoIt möglich Infos oder ähnliches in der Symbolleiste anzeigen zu lassen?
    Beispiel wäre der "NetspeedMonitor" der Download/Upload dort anzeigt, also praktisch nur Text was mir auch
    schon reichen würde. Ich arbeite an einem kleinen Add-On für Spotify und würde gern den derzeitigen Song dort anzeigen lassen,
    daher die Frage. :)

  • Du kannst ein Popup Fenster erstellen und das Attribut 'Immer im Vordergrund' Aktivieren. Das kannst du dann 'auf' die Symbolleiste setzen...

    >> Gerade fällt mir sonst nichts ein :/

  • Das mit dem PopUp hatte ich auch schon im Sinn, aber das ganze müsste ja auch als richtige Symbolleiste gehen oder?
    Ich meine NetSpeed Monitor wird auch auch als "Symbolleiste" direkt mit Text auf der Taskleiste angezeigt :/

  • Da wird es dir wohl nicht erspart bleiben dich hier oder hier reinzulesen.

    EDIT: Noch besser hier hier unter Abschnitt Deskbands

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Darter: Uff da legst du Ihm aber echt nen Dicken Schienken hin.

    Sen: Überlege dir nochmal dass mit dem Popup, bleib auf der seiter des Einfacheren, wenn du schon die möglichkeit dazu hast.
    Auser du hast Speziele gründe wieso gerade "Symbolleiste" aber dann kommste nicht um rellativ viel arbeit herum.

  • Hab mal ein Beispiel von prog@ndy umgebaut.
    Das könnte man als Notlösung verwenden, ist aber nicht ganz ideal

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GDIplus.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <Constants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #region NotifyIcon Constants
    Select
    Case @OSBuild < 2195
    $tagNOTIFYICONDATAW_TEMP = "DWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; ptr hIcon; WCHAR szTip[64];"
    Case Else
    $tagNOTIFYICONDATAW_TEMP = "DWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; ptr hIcon; WCHAR szTip[128];" & _
    "DWORD dwState; DWORD dwStateMask; WCHAR szInfo[256]; UINT uTimeout; WCHAR szInfoTitle[64]; DWORD dwInfoFlags;"
    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $tagNOTIFYICONDATAW = $tagNOTIFYICONDATAW_TEMP
    Global Const $tagNOTIFYICONDATA = $tagNOTIFYICONDATAW

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $NIN_BALLOONSHOW = $WM_USER + 2
    Global Const $NIN_BALLOONHIDE = $WM_USER + 3
    Global Const $NIN_BALLOONTIMEOUT = $WM_USER + 4
    Global Const $NIN_BALLOONUSERCLICK = $WM_USER + 5

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global Const $NIM_ADD = 0x00000000
    Global Const $NIM_MODIFY = 0x00000001
    Global Const $NIM_DELETE = 0x00000002
    Global Const $NIM_SETFOCUS = 0x00000003
    Global Const $NIM_SETVERSION = 0x00000004

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $NIF_MESSAGE = 0x00000001
    Global Const $NIF_ICON = 0x00000002
    Global Const $NIF_TIP = 0x00000004
    Global Const $NIF_STATE = 0x00000008
    Global Const $NIF_INFO = 0x00000010
    Global Const $NIF_GUID = 0x00000020
    Global Const $NIF_REALTIME = 0x00000040
    Global Const $NIF_SHOWTIP = 0x00000080

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $NIS_VISIBLE = 0x00000000
    Global Const $NIS_HIDDEN = 0x00000001
    Global Const $NIS_SHAREDICON = 0x00000002

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $NIIF_NONE = 0x00000000
    Global Const $NIIF_INFO = 0x00000001
    Global Const $NIIF_WARNING = 0x00000002
    Global Const $NIIF_ERROR = 0x00000003
    Global Const $NIIF_USER = 0x00000004
    Global Const $NIIF_NOSOUND = 0x00000010
    Global Const $NIIF_LARGE_ICON = 0x00000010
    Global Const $NIIF_RESPECT_QUIET_TIME = 0x00000080
    Global Const $NIIF_ICON_MASK = 0x0000000F

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $WM_TRAYICONPROC = $WM_USER + 100

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $HWND_For_TrayNotifications = GUICreate(@ScriptName & "TrayMsgWin", 1, 1, 0, 0, 0, 0, -3)
    #endregion NotifyIcon Constants

    [/autoit] [autoit][/autoit] [autoit]

    ; function to add / modify / delete NotfyIcon
    Func _Shell_NotifyIcon($dwMessage, ByRef $lpdata)
    ; Prog@ndy
    Local $ptr
    If IsDllStruct($lpdata) Then
    $ptr = DllStructGetPtr($lpdata)
    Else
    $ptr = Ptr($lpdata)
    EndIf
    Local $result = DllCall("shell32.dll", "int", "Shell_NotifyIconW", "dword", $dwMessage, "ptr", $ptr)
    If @error Then Return SetError(1, @error, 0)
    Return SetError($result[0] = 0, 0, $result[0])
    EndFunc ;==>_Shell_NotifyIcon

    [/autoit] [autoit][/autoit] [autoit]

    ; function to create an Icon from a GDIplus-Bitmap
    Func _GDIPlus_BitmapCreateHICONFromBitmap($hBitmap)
    ; Prog@ndy
    Local $result = DllCall($ghGDIPDLL, "int", "GdipCreateHICONFromBitmap", "ptr", $hBitmap, "ptr*", 0)
    If @error Then Return SetError(1, @error, 0)
    Return SetError($result[0], 0, $result[2])
    EndFunc ;==>_GDIPlus_BitmapCreateHICONFromBitmap

    [/autoit] [autoit][/autoit] [autoit]

    ; Ereignisse für die TrayIcons
    GUIRegisterMsg($WM_TRAYICONPROC, "TRAYICONPROC")

    [/autoit] [autoit][/autoit] [autoit]

    ; GDIPlus starten
    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics(16, 16, $hGraphics)
    _GDIPlus_GraphicsDispose($hGraphics)

    [/autoit] [autoit][/autoit] [autoit]

    $hGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hBrushText = _GDIPlus_BrushCreateSolid(0xFF000000)
    Global $BrushBackground = _GDIPlus_BrushCreateSolid(0xFF00FF00)
    _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 16, 16, $BrushBackground)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hFormat = _GDIPlus_StringFormatCreate()
    Global $hFontFamily = _GDIPlus_FontFamilyCreate("Arial")
    Global $hFont = _GDIPlus_FontCreate($hFontFamily, 10, 0)
    Global $tLayout = _GDIPlus_RectFCreate()

    [/autoit] [autoit][/autoit] [autoit]

    Global $sLauftext = StringFormat("%s:%s:%s", @HOUR, @MIN, @SEC)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sLauftext, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, $sLauftext, $hFont, $aInfo[0], $hFormat, $hBrushText)

    [/autoit] [autoit][/autoit] [autoit]

    OnAutoItExitRegister("OnAutoItExit")

    [/autoit] [autoit][/autoit] [autoit]

    $hIcon = _GDIPlus_BitmapCreateHICONFromBitmap($hBitmap) ; Icon aus Bitmap erstellen

    [/autoit] [autoit][/autoit] [autoit]

    $ICON_ID = 333

    [/autoit] [autoit][/autoit] [autoit]

    $NOTIFYICONDATAW = DllStructCreate($tagNOTIFYICONDATAW) ; Daten für das Icon
    DllStructSetData($NOTIFYICONDATAW, 1, DllStructGetSize($NOTIFYICONDATAW))
    DllStructSetData($NOTIFYICONDATAW, "hWnd", $HWND_For_TrayNotifications)
    DllStructSetData($NOTIFYICONDATAW, "uID", $ICON_ID) ; ID für das Icon
    DllStructSetData($NOTIFYICONDATAW, "uFlags", BitOR($NIF_ICON, $NIF_TIP, $NIF_MESSAGE)) ; welche Eigenschaften sollen gesetzt werden
    DllStructSetData($NOTIFYICONDATAW, "hIcon", $hIcon) ; Icon-Handle setzen
    DllStructSetData($NOTIFYICONDATAW, "szTip", $sLauftext) ; Tooltip setzen
    DllStructSetData($NOTIFYICONDATAW, "uCallbackMessage", $WM_TRAYICONPROC) ; die WindowMessage zum Empfangen von Ereignissen festelgen

    [/autoit] [autoit][/autoit] [autoit]

    _Shell_NotifyIcon($NIM_ADD, $NOTIFYICONDATAW) ; Das Icon erzeugen

    [/autoit] [autoit][/autoit] [autoit]

    _WinAPI_DestroyIcon($hIcon) ; Das Icon wieder löschen. Das TrayIcon hat eine Kopie davon erhalten.
    DllStructSetData($NOTIFYICONDATAW, "uFlags", BitOR($NIF_ICON, $NIF_TIP)) ; Die gleiche Struktur wird später auch verwendet, aber nur, um
    ; das Icon und den tooltip zu ändern.

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_Marquee", 50)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(23000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit()
    AdlibUnRegister()
    ; Aufräumen
    _Shell_NotifyIcon($NIM_DELETE, $NOTIFYICONDATAW) ; das TrayIcon löschen
    ; GDIPlus freigeben
    _GDIPlus_BrushDispose($BrushBackground)
    _GDIPlus_BrushDispose($hBrushText)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFontFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    EndFunc ;==>OnAutoItExit

    [/autoit] [autoit][/autoit] [autoit]

    Func _Marquee()
    Local Static $x = 0, $Text = $sLauftext
    $x -= 1
    _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 16, 16, $BrushBackground)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $Text, $hFont, $tLayout, $hFormat)
    If $x <= -DllStructGetData($aInfo[0], 3) + 4 Then
    $x = 16
    $Text = $sLauftext
    DllStructSetData($NOTIFYICONDATAW, "szTip", $Text)
    EndIf
    DllStructSetData($aInfo[0], 1, $x)
    _GDIPlus_GraphicsDrawStringEx($hGraphics, $Text, $hFont, $aInfo[0], $hFormat, $hBrushText)

    [/autoit] [autoit][/autoit] [autoit]

    ; Das Icon erzeugen
    $hIcon = _GDIPlus_BitmapCreateHICONFromBitmap($hBitmap)
    ; Das Icon setzen
    DllStructSetData($NOTIFYICONDATAW, "hIcon", $hIcon)
    ; Das TrayIcon erhält eine Kopie.
    _Shell_NotifyIcon($NIM_MODIFY, $NOTIFYICONDATAW)
    ; Das Icon löschen
    _WinAPI_DestroyIcon($hIcon)
    EndFunc ;==>_Marquee

    [/autoit] [autoit][/autoit] [autoit]

    Func TRAYICONPROC($hwnd, $uMsg, $wParam, $lParam)
    ; Ereignisse für das TrayIcon
    Local $uTrayMsg = _WinAPI_LoWord($lParam)
    Local $nID = _WinAPI_HiWord($lParam)
    Switch $uTrayMsg
    Case $NIN_BALLOONSHOW
    ConsoleWrite("Balloon show" & @CRLF)
    Case $NIN_BALLOONHIDE
    ConsoleWrite("Balloon hide" & @CRLF)
    Case $NIN_BALLOONTIMEOUT
    ConsoleWrite("Balloon timeout" & @CRLF)
    Case $NIN_BALLOONUSERCLICK
    ConsoleWrite("Balloon userclick" & @CRLF)
    Case $WM_LBUTTONUP
    ConsoleWrite("left mousebutton Up" & @CRLF)
    Case $WM_RBUTTONUP
    ConsoleWrite("right mousebutton Up" & @CRLF)
    Case $WM_LBUTTONDOWN
    ConsoleWrite("left mousebutton Down, set new value" & @CRLF)
    $sLauftext = StringFormat("%s:%s:%s", @HOUR, @MIN, @SEC)
    Case $WM_RBUTTONDOWN
    ConsoleWrite("right mousebutton Down" & @CRLF)
    Case $WM_CONTEXTMENU
    ConsoleWrite("Context Menu" & @CRLF)
    Case $WM_LBUTTONDBLCLK
    ConsoleWrite("left mousebutton doubleclick" & @CRLF)
    Exit
    EndSwitch
    Return _WinAPI_DefWindowProc($hwnd, $uMsg, $wParam, $lParam)
    EndFunc ;==>TRAYICONPROC

    [/autoit]