ist das möglich...

  • ich habe zwar noch keine zeit dafür, aber ich würde es gerne in ein paar wochen probieren.

    und zwar möchte ich die funktionen ein paar kleinerer programme vereinen.

    IDEE:

    -Fenster die in der Taskleiste erscheinen, in den Systray minimieren
    -Systray Symbole dem AutoIt-Script hinzufügen (so dass diese nicht mehr im systray erscheinen, sondern im traymenü ... wie bei TrayWizard)
    -Fenster in der Taskleiste nach eigenen Wünschen sortieren

    evtl noch weitere ideen, aber das ist erstmal das, was ich nice finde.

    jetzt ist die frage, ist autoit das geeignete programm dafür, oder ist das überhaupt möglich? und wenn ja, wer würde mir dabei helfen *g*

    • Offizieller Beitrag

    Hi,

    -Fenster die in der Taskleiste erscheinen, in den Systray minimieren
    sollte gehen
    -Systray Symbole dem AutoIt-Script hinzufügen (so dass diese nicht mehr im systray erscheinen, sondern im traymenü ... wie bei TrayWizard)
    Wenn ich dich richtig verstehe, willst du die Icons aus der Taskleiste in ein Traymenü einbinden? schwierig
    -Fenster in der Taskleiste nach eigenen Wünschen sortieren
    Keine Ahnung, ich wüsste nicht mal wie das manuell geht.

    So long,

    Mega

  • 1. fenster aus taskleiste in systray minimieren
    also eine möglichkeit wäre, dass beim rechtsklick auf ein fenster im kontrextmenü der einrag "minimize to tray" o. ä. erscheint. dann verschwindet das fenster aus der taskleiste und dessen smybol ist dann im systray zu sehen.

    wie würde ich das jetzt umsetzen? wüsste nicht mal, wo ich anfangen soll, ausser vllt regeintrag *g*

    2. systray symbole dem autoit script hinzufügen
    man kann durch das kontextmenü oder einer liste die icons die sich zZ im systray befinden auswählen. diese sollen grob gesagt "aus dem systray verschwinden". dazu werden diese im traymenü vom autoit script angezeigt.

    3. es gibt ein programm namens taskshuffle, womit man das bewerkstelligen kann.
    mit linksklick das fenster halten und "einfach" verschieben

    das sind halt die ideen, nur wo anfangen und wie ?

  • Hi, hier mal ein Beispiel wie Du an die (sichtbaren) Fenster kommst. Wie du das Ganze aktivierst bleibt Dir ja überlassen, würde dem Programm einfach einen Trayeintrag verpassen, z.B. "Minimize To Tray (All)" und dann noch einen der alles wieder rückgängih macht.

    [autoit]

    Local $a_windows = -1

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

    $a_windows = WinList()

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

    For $i = 1 To $a_windows[0][0]
    If $a_windows[$i][0] <> "" And BitAND(WinGetState($a_windows[$i][1]), 2) Then
    ;~ Debug MsgBox
    MsgBox(64, "Window Info", "Title=" & $a_windows[$i][0] & @CR & "Handle=" & $a_windows[$i][1])
    ;~ Hier müsste man das Fenster nun verstecken und AutoIt in den Tray "packen".
    WinSetState($a_windows[$i][0], "", @SW_HIDE)
    TrayCreateItem($a_windows[$i][0])
    EndIf
    Next

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

    Exit(0)

    [/autoit]
  • hey, das ist schonmal ne gute funktion.
    hab mir überlegt, um das ganze vllt zu vereinfachen, dass im traymenü direkt alle fenster und tray-icons angezeigt werden, die zZ existieren.

    wenn man dann einen eintrag anklickt, wird dieser versteckt (und traychecked). bei einem weiteren klick wieder sichtbar. alle einträge die checked waren, werden in einer ini gespeichert, damit sie beim nächsten mal wieder versteckt werden.

    gibt es denn was für den tray wie winlist() ... also traylist()?

    btw, könnte man vllt ne bestehende dll von traywizard benutzen?

  • sauber, bin im englischen forum fündig geworden. also dort gibt es auch schon ähnliche programme wie ich es vorhabe. aber werde mich trotzdem dran probieren.

    also windows/trays anzeigen/verstecken sollte ich somit hinbekommen.
    beim rest werde ich mal gucken ob es möglich ist ...

    PS: die ersten probs tauchen auf

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

    #include <Systray_UDF.au3>
    #Include <Constants.au3>
    #include <array.au3>

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

    Opt("TrayMenuMode",1)
    HotKeySet("^!L", "TrayIcon")

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

    $SysTitles = _SysTrayIconTitles()

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

    For $i = 1 to $SysTitles[0][0]
    $Item[$i] = TrayCreateItem($SysTitles[$i][1])
    Next

    $trayexit = TrayCreateItem("Exit")
    TraySetState()
    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $Item[$i]
    _SysTrayIconVisible( 0, _SysTrayIconIndex($SysTitles[$i][1]))
    TrayItemSetState( $SysTitles[$i][1], $TRAY_CHECKED)
    ContinueLoop
    Case $msg = $trayexit
    Exit
    EndSelect
    WEnd

    ;Tray-Icon
    Func TrayIcon()
    Opt("TrayIconHide", Not Opt("TrayIconHide", "Default"))
    EndFunc

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

    E:\AutoIt3\Include\WindowsConstants.au3 (64) : ==> Can not redeclare a constant.:
    Global Const $WM_GETTEXT = 0x000D
    Global Const ^ ERROR

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

    was tun?

    • Offizieller Beitrag

    Einfach die Zeile 37 in der Systray_UDF.au3 deaktivieren, dann sollte es gehen!

  • hmm, leider komme ich dann auch nicht richtig weiter ... der fehler ist zwar behoben, aber es folgen weitere

    bin jetzt soweit ... also laut theorie, praktisch lässt es sich leider noch nicht testen

    Spoiler anzeigen
    [autoit]


    #include <Systray_UDF.au3>
    #Include <Constants.au3>
    #include <array.au3>

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

    Opt("TrayMenuMode",1)
    HotKeySet("^!L", "TrayIcon")

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

    _getWindows()
    _getTrayIcons()

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

    TraySetState()
    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $Win[$i]
    _SysTrayIconVisible( Not _SysTrayIconVisible("Default", _SysTrayIconIndex($Win[$i][1])))
    TrayItemSetState( $Win[$i][1], $TRAY_CHECKED)
    ContinueLoop
    Case $msg = $Tray[$i]
    _SysTrayIconVisible( Not _SysTrayIconVisible("Default", _SysTrayIconIndex($Tray[$i][1])))
    TrayItemSetState( $Tray[$i][1], $TRAY_CHECKED)
    ContinueLoop
    Case $msg = $trayexit
    Exit
    EndSelect
    WEnd

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

    ;Functions

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

    ;get windows
    Func _getWindows()
    TrayCreateItem("Windows:")
    $WinTitles = WinList()
    For $i = 1 to $WinTitles[0][0]
    $Win[$i] = TrayCreateItem($WinTitles[$i][1])
    Next
    EndFunc

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

    ;get tray-icons
    Func _getTrayIcons()
    TrayCreateItem("Systray:")
    $SysTitles = _SysTrayIconTitles()
    For $i = 1 to $SysTitles[0][0]
    $Tray[$i] = TrayCreateItem($SysTitles[$i][1])
    Next
    $trayexit = TrayCreateItem("Exit")
    EndFunc

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

    ;show/ hide mail tray-icon
    Func TrayIcon()
    Opt("TrayIconHide", Not Opt("TrayIconHide", "Default"))
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Hallo,

    der Fehler steht doch da, _SysTrayIconVisible() wird mit einer ungültigen anzahl von Parametern aufgerufen.

    • Offizieller Beitrag

    Hi,

    hier ist auch noch was interessantes:

    Spoiler anzeigen
    [autoit]

    #include <A3LToolBar.au3>

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

    Opt("WinTitleMatchMode", 4)
    $hToolBar = WinGetHandle("[CLASS:Shell_TrayWnd]", "")
    $hSysTray = ControlGetHandle($hToolBar, "", "ToolbarWindow322")
    $BtnCnt = _Toolbar_ButtonCount ($hSysTray)
    $BtnData = ""
    For $i = 0 To $BtnCnt - 1
    $BtnCmdID = _Toolbar_IndexToCommand ($hSysTray, $i)
    $BtnTxt = _Toolbar_GetButtonText ($hSysTray, $BtnCmdID)
    $BtnData &= "Index: " & $i & " CommandID: " & $BtnCmdID & " Text: " & $BtnTxt & @CRLF
    Next

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

    MsgBox(64, "Result", $BtnData)

    [/autoit]

    So long,

    Mega