Split Screen Windows-Datei-Explorer

  • Mein allerallererstes Skript... nix besonderes, aber ich dachte mir vielleicht kann's jemand gebrauchen.
    Habe eine Möglichkeit gesucht 2 Explorer-Fenster am Bildschirm nebeneinander anzuordnen.... klar, kenn ich Total Commander und diverse andere Tools...
    Aber mittlererweile hab ich mich schon so an den Standard-Windows-Explorer (mit all seinen Makken) gewöhnt, dass mir diese rudimentäre Lösung hier meisten reicht:

    Spoiler anzeigen
    [autoit]


    ; Win-Explorer im Pfad "Bilbiotheken" (Standard bei Win7)
    $links = "\explorer.exe"
    ; Explorer im Pfad Computer
    $rechts = "\explorer.exe /root,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"

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

    Opt("WinTitleMatchMode", 4)

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

    ; BlockInput(1)
    Run(@WindowsDir & $links)
    WinWaitActive("[Class:CabinetWClass]")
    $title = WinGetTitle("[Class:CabinetWClass]")
    WinSetTitle($title, "", $title & " - links")
    Send("{LWINDOWN}{LEFT}")
    Send("{LWINUP}")
    Run(@WindowsDir & $rechts)
    Sleep(2000)
    WinWaitActive("[Class:CabinetWClass]")
    $title = WinGetTitle("[Class:CabinetWClass]")
    WinSetTitle($title, "", $title & " - rechts")
    Send("{LWINDOWN}{RIGHT}")
    Send("{LWINUP}")
    ; BlockInput(0)

    [/autoit]


    Das Ergbnis sollte dann so aussehen:

    Spoiler anzeigen


    Blöderweise wird der Datei-Explorer in Windows standardmäßig als ein Prozess gestartet und die Fenster-Titel entsprechen den Pfaden, die gerade angezeigt werden...
    Das macht es ein bisschen schwieriger... das wurde schon mal hier besprochen, ohne wirklich zufriedenstellende Lösung...
    Habe die in Windows 7 neu eingeführte Tastenkombination (WIN + pfeil links od. rechts) verwendet... daher funktioniert es auch nur mit Win7... jaja, total n00big ^^

    Ich erlaube mir - weil's hier grad so gut rein passt, die viel elegantere Lösung von BugFix aus einem dem oben gennanten Thread nochmal zu zitieren:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    Opt("WinTitleMatchMode", 4)
    Local $WinList = WinList("CLASSNAME=ExploreWClass")

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

    Local $count = $WinList[0][0], $ListOld, $aHwnd[2], $j = 0
    If $count Then $ListOld = $WinList
    ShellExecute("explorer.exe")
    ShellExecute("explorer.exe")
    Do
    $WinList = WinList("CLASSNAME=ExploreWClass")
    Sleep(50)
    Until $WinList[0][0] = $count +2
    Opt("WinTitleMatchMode", 1) ; wichtig, sonst können die Window Funcs nicht mit dem Handle arbeiten!

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

    If $count Then
    For $i = 1 To $WinList[0][0]
    _ArraySearch($ListOld, $WinList[$i][1], 0, 1, 0, 0, 1, 1)
    If @error Then
    $aHwnd[$j] = $WinList[$i][1]
    $j = 1
    EndIf
    Next
    Else
    $aHwnd[0] = $WinList[1][1]
    $aHwnd[1] = $WinList[2][1]
    EndIf

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

    WinMove($aHwnd[0],"",0,0,@DesktopWidth/2,@DesktopHeight-480-60) ; left
    WinMove($aHwnd[1],"",@DesktopWidth/2,0,@DesktopWidth/2,@DesktopHeight-480-60) ; right

    [/autoit]


    Die funktioniert bei mir jedoch nur, wenn ich statt ExploreWClass "CabinetWClass" verwende, also

    [autoit]


    Local $WinList = WinList("CLASSNAME=CabinetWClass")

    [/autoit]

    Sobald ich das Skript ein zweites Mal ausführe, funktioniert das bei mir nicht mehr...
    Bei der Lösung mit WIN+pfeiltaste kann ich das Skript auch mehrmals ausführen mit dem gewünschten Ergebnis.