SysTraySort (sortiert die Systray Icons)

  • Hier hab ich noch ein kleines Programm von mir "wiedergefunden" (obwohl ich es ja ständig am Laufen habe ... ) das die SysTray-Icons, entweder nach Prozess oder Titel, auf- oder absteigend, sortiert, damit da ein wenig mehr Ordnung in der Ecke herrscht :)

    Spoiler anzeigen
    [autoit]

    #include <SysTray_UDF.au3>
    #include <Array.au3>

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

    #NoTrayIcon

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

    local $proc = True
    local $up = 0

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

    ProcessSetPriority(@ScriptName, 0)

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

    If $CmdLine[0] = 0 Then
    MsgBox(64,"SysTraySort V1.2", _
    @CR & "SysTraySort, 2007 by Thorsten Willert" & _
    @CR & "USAGE: [/PROC] [/TITLE] [/UP] [/DOWN]" & _
    @CR & "/PROC:" & @TAB & "Sort by process name" & _
    @CR & "/TITLE:" & @TAB & "Sort by title" & _
    @CR & "/UP:" & @TAB & "Ascending" & _
    @CR & "/DOWN:" & @TAB & "Descending")
    Exit
    EndIf

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

    For $i = 1 to $CmdLine[0]
    If StringUpper($CmdLine[$i]) = "/PROC" Then
    $proc = True
    ElseIf StringUpper($CmdLine[$i]) = "/TITLE" Then
    $proc = False
    ElseIf StringUpper($CmdLine[$i]) = "/UP" Then
    $up = 0
    ElseIf StringUpper($CmdLine[$i]) = "/DOWN" Then
    $up = 1
    EndIf
    Next

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

    global $iTitles = _SysTrayIconTitles()

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

    If Not IsArray($iTitles) Then Exit

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

    global $iProcesses = _SysTrayIconProcesses()

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

    If Not IsArray($iProcesses) Then Exit

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

    If $proc Then
    ByProcess($up)
    Else
    ByTitle($up)
    EndIf

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

    Exit

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

    ;########################################################################
    Func ByProcess($s)

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

    _ArraySort($iProcesses,$s)

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

    For $i=0 to Ubound($iProcesses)-1
    sleep(1000)
    $pos = _SysTrayIconIndex($iProcesses[$i], 0)
    If $pos <> $i Then _SysTrayIconMove($pos, $i)
    Next

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

    EndFunc

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

    ;########################################################################
    Func ByTitle($s)

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

    _ArraySort($iTitles,$s)

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

    For $i=0 to Ubound($iTitles)-1
    sleep(1000)
    $pos = _SysTrayIconIndex($iTitles[$i], 1)
    If $pos <> $i Then _SysTrayIconMove($pos, $i)
    Next

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

    EndFunc

    [/autoit]

    Das ganze einfach über den Taskplaner laufen lassen z.B.:
    http://thorsten-willert.de/Themen/Softwar…ySort/index.php

    Benötigt noch die Systray.au3:
    SysTrayUDF
    oder gleich die exe von meiner Homepage nehmen.

    Viel Spaß damit!
    Grüße

    Stilgar

  • Hiho,

    ist auf jeden fall ne nette idee, leider kann ich aber nicht behaupten, dass es bei mir funktioniert =(
    hab die exe von deiner hp genommen.

    teils passiert was, aber richtig sortiert ist es danach leider nie.

    wenn ich selber kompilieren will, kommt beim starten:

    ---------------------------
    AutoIt Error
    ---------------------------
    Line -1:


    Error: "long_ptr", "int_ptr" and "short_ptr" DllCall() types have been deprecated. Use "long*", "int*" and "short*" instead.
    ---------------------------
    OK
    ---------------------------

  • Komisch - also, bei mir funktioniert es. Nach Titel sortieren ist da entscheidend, nach Prozess ist meist nicht so "schön".
    Und wenn sich oft was ändert, wirkt es natürlich auch nicht so gut.

    Die Fehlermeldung kann ich nicht nachvollziehen. Ich habe die SysTray-UDF aus dem englischen Forum und AutoIt v3.2.12.0.
    Damit kommt kein Fehler, weder beim kompilieren noch beim Starten.

    [EDIT]
    Umgekehrt - nach Prozess nicht nach Titel sortieren, es gibt meist viele Tray-Icons die keine Titel haben. Und dann gibts wieder ein Problem, da z.B. die Lautstärke, Verbindungs-Dings usw. alle eine "explorer.exe" sind :rolleyes:

    3 Mal editiert, zuletzt von Stilgar (25. Juni 2008 um 16:25)