Fenster erkennen bei wechselndem Titel

  • Hallo,

    wie kann ich erkennen ob das gerade aktive Fenster der Windows-Explorer ist?

    Oder anders gefragt:

    Wie kann ich den Class-Namen, in Au3Info angezeigt, abfragen?

    >>>>>>>>>>>> Window Details <<<<<<<<<<<<<
    Title: WINDOWS
    Class: ExploreWClass
    Size: X: 0 Y: 0 W: 1231 H: 633


    Vielen Dank
    Viele Grüße

    Carsten

  • Hhmmm......

    mit dem Befehl experimentiere ich auch schon rum, wenig erfolgreich.

    Er liefert mir folgendes Ergebnis:

    Spoiler anzeigen


    WorkerW
    ReBarWindow32
    ComboBoxEx32
    ToolbarWindow32
    ComboBox
    Edit
    ToolbarWindow32
    WorkerW
    ToolbarWindow32
    WorkerW
    msctls_statusbar32
    SHELLDLL_DefView
    DUIViewWndClassName
    DirectUIHWND
    CtrlNotifySink
    SysListView32
    SysHeader32

    Da die ganze Liste immer identisch ist, könnte ich natürlich das als Kriterium nehmen - aber das erscheint mir doch etwas 'wackelig'.


    Dies geht leider auch nicht:

    WinGetState( "classname=ExploreWClass" , "" )

    Trotzdem vielen Dank

    • Offizieller Beitrag

    Dann löse es mit Shell-Object:

    [autoit]

    $oShell = ObjCreate("shell.application") ; Explorer als Shell-Object
    $oShellWindows = $oShell.windows ; Auflistung aller offenen Shell-Windows

    If Isobj($oShellWindows) Then
    $string = ""
    For $Window In $oShellWindows
    $String &= $Window.LocationName & @CRLF
    Next
    Msgbox(0,"Shell Windows","Es existieren folgende Explorer-Fenster:" & @CRLF & @CRLF & $String)
    Endif
    Exit

    [/autoit]
  • Perfekt, vielen Dank.

    Hier mein kleines Tool. Vielleicht braucht es ja jemand :)


    [autoit]

    ;Kleines Tool, welches immer den Pfad des aktuellen Win-Explorers erkennt.
    ;von Carsten unter tatkräftiger Mithilfe des deutschen Autoit-Forums. März 2007

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

    ;Wer kurzfristig viele Dateien an verschiedenen Orten (Pfaden) benötigt, kann
    ;hiermit seine Schnelligkeit vielleicht noch steigern.....

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

    ;Hintergrund:
    ;Um Broschüren zu erstellen, brauchte ich Texte und Fotos. Die Fotos waren noch anzupassen (Größe, Format etc.).
    ;Da alles auf anderen Pfaden lag, musste ich immer wieder lange Pfadnamen eintippen, da ich die Dateien teilweise
    ;anderweitig speicherte als ich sie öffnete.

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

    ;Die Idee:
    ;Immer wenn ein Win-Explorer-Fenster im Vordergrund ist, merkt er sich den eingestellten Pfadnamen. Mit einer
    ;Tastenkombination schreibt er den an die aktuelle Cursor-Stelle.

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

    ;Ablauf:
    ;- Für jeden Speichern / Öffnen - Vorgang ein Win-Explorer öffnen (mit dem entsprechenden Pfad)
    ;- Au3-Programm starten
    ;- das entsprechende Win-Explorer-Fenster in den Vordergrund holen (Pieps = gespeichert)
    ;- das gewünschte Programm in den Vordergrund holen , öffnen bzw. speichern-Dialog
    ;- Strg-Alt-V schreibt den gemerkten Pfad an die Cursor-Stelle

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

    ; Viel Spaß

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

    Opt("SendKeyDelay", 0) ;0 milliseconds = schneller als Standard
    ; Auszug aus Au3-Hilfe:
    ;SendKeyDelay:
    ;Alters the the length of the brief pause in between sent keystrokes.
    ;Time in milliseconds to pause (default=5). Sometimes a value of 0 does not work; use 1 instead.

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

    dim $merk_fenster
    dim $merk_pfad

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

    $merk_fenster = "_leer_" ; damit es beim erstenmal funktioniert....

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

    HotKeySet("^!v","up_clipschreiben")

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

    while 1
    if NOT WinActive($merk_fenster) then
    $oShell = ObjCreate("shell.application") ; Explorer als Shell-Object
    $oShellWindows = $oShell.windows ; Auflistung aller offenen Shell-Windows

    If Isobj($oShellWindows) Then
    For $Window In $oShellWindows
    if WinActive ( $Window.LocationName, "" ) then
    $merk_fenster = $Window.LocationName
    $merk_pfad = ControlGetText($Window.LocationName, "", "Edit1")
    ; könnte auch in den Win-Clipboard gespeichert werden mit ClipPut,
    ; kann dann aber nur noch eingeschränkt anderweitig verwendet werden.
    Beep(500, 20)
    EndIf
    Next
    Endif
    sleep(500)
    EndIf
    WEnd
    Exit

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

    func up_clipschreiben()
    send ($merk_pfad&"\")
    EndFunc

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