Wie bekomme ich heraus welches Fenster gerade aktiv ist?

    • Offizieller Beitrag

    Servus.

    Ich stehe gerade auf dem Schlauch. Mit welchem Befehl kann ich abfragen, welches Fenster gerade aktiv ist.
    Mir fällt z.Z nur eine komplizierte Lösung mit einer Kombi aus WinList und WinActive ein.

    • Offizieller Beitrag

    Thx.
    Das ist ja Einfach. :D

    Ich sollte mir angewöhnen die Remarks zu lesen. :pinch:

  • Hallo, ich glaube ich brauche deswegen kein Thread erstellen!

    Also:
    WinList zeigt nicht alle Fenster an, aber warum?
    Hier ist das Script:

    Window Manager bei Understood
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    ;~ Opt("WinTitleMatchMode", 2)

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

    Global $ctrl_TitleList
    Global $s_SelectedTitle
    Global $s_SelectedTitle_Vorher = ""
    Global $a_WinPos_Vorher[4] = ["", "", "", ""]
    Global $iCount = 1
    Global $s_SecurityVar = 0
    Global $TransCB_Vorher = ""
    Global $TopmostCB_Vorher = ""

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Window Manager", 559, 454, 192, 114)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    $ctrl_AktualisierenButton = GUICtrlCreateButton("Aktualisieren", 8, 384, 75, 25, $WS_GROUP)
    $ctrl_ListeLeerenButton = GUICtrlCreateButton("Liste leeren", 152, 384, 75, 25, $WS_GROUP)
    $ctrl_TransparentInput = GUICtrlCreateInput("255", 288, 72, 48, 21, BitOR($ES_AUTOHSCROLL, $ES_NUMBER))
    GUICtrlSetLimit(-1, 3)
    $ctrl_TransparentUpdown = GUICtrlCreateUpdown($ctrl_TransparentInput)
    GUICtrlSetLimit(-1, 0, 255)
    $Label1 = GUICtrlCreateLabel("Setze Transparenz, 0~255", 240, 16, 130, 17)
    $ctrl_TransparentButton = GUICtrlCreateButton("Ok", 264, 104, 83, 25, $WS_GROUP)
    $ctrl_TransparentCheckbox = GUICtrlCreateCheckbox("Transparenz setzen", 248, 40, 113, 17)
    $ctrl_TopmostCheckbox = GUICtrlCreateCheckbox("Topmost setzen", 264, 176, 97, 17)
    $ctrl_TopmostWindowTitleInput = GUICtrlCreateInput("", 248, 200, 129, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $Label2 = GUICtrlCreateLabel("Setze Topmost", 272, 152, 75, 17)
    $ctrl_TopmostButton = GUICtrlCreateButton("Ok", 248, 232, 59, 25, $WS_GROUP)
    $Group1 = GUICtrlCreateGroup("Liste verfeinern", 240, 272, 177, 145)
    $ctrl_OrdnerRadioButton = GUICtrlCreateRadio("Ordner", 256, 288, 113, 17)
    $ctrl_AllesRadioButton = GUICtrlCreateRadio("Alles", 256, 384, 113, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $ctrl_IERadioButton = GUICtrlCreateRadio("Internet Explorer", 256, 312, 113, 17)
    $ctrl_FFRadioButton = GUICtrlCreateRadio("Mozilla Firefox", 256, 336, 113, 17)
    $ctrl_NotepadRadioButton = GUICtrlCreateRadio("Notepad", 256, 360, 113, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $ctrl_ActuallyTitleInput = GUICtrlCreateInput("", 8, 424, 545, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $ctrl_ActuallyTitleCopyButton = GUICtrlCreateButton("Titel kopieren", 424, 392, 131, 25, $WS_GROUP)
    $ctrl_TopmostEntfernenButton = GUICtrlCreateButton("Entfernen", 320, 232, 59, 25, $WS_GROUP)
    $ctrl_ActuallyWindowActivateButton = GUICtrlCreateButton("Fenster aktivieren", 424, 360, 131, 25, $WS_GROUP)
    $Group2 = GUICtrlCreateGroup("Größe ändern", 424, 8, 129, 129)
    $Label3 = GUICtrlCreateLabel("Größe: 000, 000", 432, 32, 100, 17)
    $ctrl_SizeWidthInput = GUICtrlCreateInput("", 432, 64, 33, 21)
    GUICtrlSetLimit(-1, 4)
    $ctrl_SizeButton = GUICtrlCreateButton("Ok", 432, 104, 115, 25, $WS_GROUP)
    $Label4 = GUICtrlCreateLabel(",", 472, 72, 7, 17)
    $ctrl_SizeHeightInput = GUICtrlCreateInput("", 480, 64, 33, 21)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group3 = GUICtrlCreateGroup("Fenstertitel", 424, 224, 129, 121)
    $ctrl_ChangeTitleOldInput = GUICtrlCreateInput("", 432, 312, 113, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    $ctrl_ChangeTitleButton = GUICtrlCreateButton("Ok", 448, 280, 83, 25, $WS_GROUP)
    $ctrl_ChangeTitleNewInput = GUICtrlCreateInput("", 432, 248, 113, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $ctrl_AboutButton = GUICtrlCreateButton("Über", 424, 152, 131, 25, $WS_GROUP)
    $ctrl_ExitButton = GUICtrlCreateButton("Beenden", 424, 184, 131, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _MakeTransparentCtrlDisabled()
    _MakeTopmostCtrlDisabled()
    _MakeSizeCtrlDisabled()
    _MakeWinTitleCtrlDisabled()
    _MakeCheckboxesDisabled()

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

    While 1
    If Not $s_SecurityVar = 1 Then
    $s_SelectedTitle = GUICtrlRead($ctrl_TitleList)
    EndIf
    ;~ Sleep(10)
    $TransCB = GUICtrlRead($ctrl_TransparentCheckbox)
    $TopmostCB = GUICtrlRead($ctrl_TopmostCheckbox)
    If $TransCB <> $TransCB_Vorher Then
    If $TransCB = $GUI_CHECKED Then _MakeTransparentCtrlEnabled()
    If $TransCB = $GUI_UNCHECKED Then _MakeTransparentCtrlDisabled()
    EndIf
    If $TopmostCB <> $TopmostCB_Vorher Then
    If $TopmostCB = $GUI_CHECKED Then _MakeTopmostCtrlEnabled()
    If $TopmostCB = $GUI_UNCHECKED Then _MakeTopmostCtrlDisabled()
    EndIf
    $a_WinPos = WinGetPos($s_SelectedTitle)
    If $s_SelectedTitle <> $s_SelectedTitle_Vorher Then
    GUICtrlSetData($ctrl_ActuallyTitleInput, $s_SelectedTitle)
    GUICtrlSetData($ctrl_ChangeTitleOldInput, $s_SelectedTitle)
    GUICtrlSetData($ctrl_TopmostWindowTitleInput, $s_SelectedTitle)
    _MakeCheckboxesEnabled()
    _MakeTopmostCtrlEnabled()
    _MakeTransparentCtrlEnabled()
    _MakeWinTitleCtrlEnabled()
    _MakeSizeCtrlEnabled()
    EndIf
    If IsArray($a_WinPos) And IsArray($a_WinPos_Vorher) Then
    If $a_WinPos[2] <> $a_WinPos_Vorher[2] Or $a_WinPos[3] <> $a_WinPos_Vorher[3] Then
    GUICtrlSetData($Label3, "Größe: " & $a_WinPos[2] & ", " & $a_WinPos[3])
    EndIf
    EndIf
    $a_WinPos_Vorher = WinGetPos($s_SelectedTitle)
    $s_SelectedTitle_Vorher = GUICtrlRead($ctrl_TitleList)
    $TransCB_Vorher = GUICtrlRead($ctrl_TransparentCheckbox)
    $TopmostCB_Vorher = GUICtrlRead($ctrl_TopmostCheckbox)
    $s_SecurityVar = 0
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $ctrl_AktualisierenButton
    _ActuallyList()
    Case $ctrl_ListeLeerenButton
    _DeleteList()
    Case $ctrl_ActuallyTitleCopyButton
    If GUICtrlRead($ctrl_ActuallyTitleInput) <> "" Then ClipPut(GUICtrlRead($ctrl_ActuallyTitleInput))
    Case $ctrl_ActuallyWindowActivateButton
    If GUICtrlRead($ctrl_ActuallyTitleInput) <> "" Then WinActivate(GUICtrlRead($ctrl_ActuallyTitleInput))
    Case $ctrl_AboutButton
    MsgBox(0, "Über", "Erstellt von Understood!" & @CRLF & @CRLF & "Dieses Programm ist Open-Source und soll dazu da sein, um Anfänger zu helfen!" & @CRLF & @CRLF & "Das Programm darf niemand als seines ausgeben!")
    Case $ctrl_ExitButton
    Exit
    Case $ctrl_ChangeTitleButton
    _ChangeTitle()
    Case $ctrl_TransparentButton
    _ChangeTransparent()
    Case $ctrl_TopmostButton
    _AddTopmost()
    Case $ctrl_TopmostEntfernenButton
    _DelTopmost()
    Case $ctrl_SizeButton
    _ChangeSize()

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

    EndSwitch
    WEnd

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

    Func _ActuallyList()
    Local $Ordner = GUICtrlRead($ctrl_OrdnerRadioButton)
    Local $IE = GUICtrlRead($ctrl_IERadioButton)
    Local $FF = GUICtrlRead($ctrl_FFRadioButton)
    Local $Alles = GUICtrlRead($ctrl_AllesRadioButton)
    Local $Notepad = GUICtrlRead($ctrl_NotepadRadioButton)

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

    Select
    Case $Ordner = $GUI_CHECKED
    $aWinList = WinList("[Class:CabinetWClass]")
    If IsArray($aWinList) Then
    GUICtrlDelete($ctrl_TitleList)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    For $i = 1 To UBound($aWinList) - 1 Step +1
    GUICtrlSetData($ctrl_TitleList, $aWinList[$i][0])
    Next
    EndIf
    Case $IE = $GUI_CHECKED
    $aWinList = WinList("[Class:IEFrame]")
    If IsArray($aWinList) Then
    GUICtrlDelete($ctrl_TitleList)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    For $i = 1 To UBound($aWinList) - 1 Step +1
    GUICtrlSetData($ctrl_TitleList, $aWinList[$i][0])
    Next
    EndIf
    Case $FF = $GUI_CHECKED
    $aWinList = WinList("[Class:MozillaUIWindowClass]")
    If IsArray($aWinList) Then
    GUICtrlDelete($ctrl_TitleList)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    For $i = 1 To UBound($aWinList) - 1 Step +1
    GUICtrlSetData($ctrl_TitleList, $aWinList[$i][0])
    Next
    EndIf
    Case $Notepad = $GUI_CHECKED
    $aWinList = WinList("[Class:Notepad]")
    If IsArray($aWinList) Then
    GUICtrlDelete($ctrl_TitleList)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    For $i = 1 To UBound($aWinList) - 1 Step +1
    GUICtrlSetData($ctrl_TitleList, $aWinList[$i][0])
    Next
    EndIf
    Case $Alles = $GUI_CHECKED
    $aWinList = WinList("")
    If IsArray($aWinList) Then
    GUICtrlDelete($ctrl_TitleList)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    For $i = 1 To $aWinList[0][0] Step +1
    GUICtrlSetData($ctrl_TitleList, $aWinList[$i][0])
    Next
    EndIf
    EndSelect
    EndFunc ;==>_ActuallyList

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

    Func _DeleteList()
    GUICtrlDelete($ctrl_TitleList)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    EndFunc ;==>_DeleteList

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

    Func _MakeTopmostCtrlDisabled()
    GUICtrlSetState($ctrl_TopmostButton, $GUI_DISABLE)
    GUICtrlSetState($ctrl_TopmostEntfernenButton, $GUI_DISABLE)
    GUICtrlSetState($ctrl_TopmostWindowTitleInput, $GUI_DISABLE)
    EndFunc ;==>_MakeTopmostCtrlDisabled

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

    Func _MakeTransparentCtrlDisabled()
    GUICtrlSetState($ctrl_TransparentButton, $GUI_DISABLE)
    GUICtrlSetState($ctrl_TransparentInput, $GUI_DISABLE)
    GUICtrlSetState($ctrl_TransparentUpdown, $GUI_DISABLE)
    EndFunc ;==>_MakeTransparentCtrlDisabled

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

    Func _MakeSizeCtrlDisabled()
    GUICtrlSetState($ctrl_SizeButton, $GUI_DISABLE)
    GUICtrlSetState($ctrl_SizeHeightInput, $GUI_DISABLE)
    GUICtrlSetState($ctrl_SizeWidthInput, $GUI_DISABLE)
    EndFunc ;==>_MakeSizeCtrlDisabled

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

    Func _MakeWinTitleCtrlDisabled()
    GUICtrlSetState($ctrl_ChangeTitleButton, $GUI_DISABLE)
    GUICtrlSetState($ctrl_ChangeTitleNewInput, $GUI_DISABLE)
    EndFunc ;==>_MakeWinTitleCtrlDisabled

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

    Func _MakeCheckboxesDisabled()
    GUICtrlSetState($ctrl_TopmostCheckbox, $GUI_DISABLE)
    GUICtrlSetState($ctrl_TransparentCheckbox, $GUI_DISABLE)
    EndFunc ;==>_MakeCheckboxesDisabled

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

    Func _MakeCheckboxesEnabled()
    GUICtrlSetState($ctrl_TopmostCheckbox, $GUI_ENABLE)
    GUICtrlSetState($ctrl_TransparentCheckbox, $GUI_ENABLE)
    EndFunc ;==>_MakeCheckboxesEnabled

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

    Func _MakeWinTitleCtrlEnabled()
    GUICtrlSetState($ctrl_ChangeTitleButton, $GUI_ENABLE)
    GUICtrlSetState($ctrl_ChangeTitleNewInput, $GUI_ENABLE)
    EndFunc ;==>_MakeWinTitleCtrlEnabled

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

    Func _MakeSizeCtrlEnabled()
    GUICtrlSetState($ctrl_SizeButton, $GUI_ENABLE)
    GUICtrlSetState($ctrl_SizeHeightInput, $GUI_ENABLE)
    GUICtrlSetState($ctrl_SizeWidthInput, $GUI_ENABLE)
    EndFunc ;==>_MakeSizeCtrlEnabled

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

    Func _MakeTransparentCtrlEnabled()
    Local $TransCB_Func = GUICtrlRead($ctrl_TransparentCheckbox)
    If $TransCB_Func = $GUI_CHECKED Then
    GUICtrlSetState($ctrl_TransparentButton, $GUI_ENABLE)
    GUICtrlSetState($ctrl_TransparentInput, $GUI_ENABLE)
    GUICtrlSetState($ctrl_TransparentUpdown, $GUI_ENABLE)
    EndIf
    EndFunc ;==>_MakeTransparentCtrlEnabled

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

    Func _MakeTopmostCtrlEnabled()
    Local $TopmostCB_Func = GUICtrlRead($ctrl_TopmostCheckbox)
    If $TopmostCB_Func = $GUI_CHECKED Then
    GUICtrlSetState($ctrl_TopmostButton, $GUI_ENABLE)
    GUICtrlSetState($ctrl_TopmostEntfernenButton, $GUI_ENABLE)
    GUICtrlSetState($ctrl_TopmostWindowTitleInput, $GUI_ENABLE)
    EndIf
    EndFunc ;==>_MakeTopmostCtrlEnabled

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

    Func _ChangeTitle()
    Local $NewTitle = GUICtrlRead($ctrl_ChangeTitleNewInput)
    Local $OldTitle = GUICtrlRead($ctrl_ActuallyTitleInput)
    If $OldTitle = "" Then Return 0
    If $NewTitle = "" Then Return 0
    $s_SelectedTitle = $NewTitle
    WinSetTitle($OldTitle, "", $NewTitle)
    $s_SecurityVar = 1
    _ActuallyList()
    EndFunc ;==>_ChangeTitle

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

    Func _ChangeTransparent()
    Local $Title = GUICtrlRead($ctrl_ActuallyTitleInput)
    Local $iTrans = GUICtrlRead($ctrl_TransparentInput)
    If $iTrans > 255 Or $iTrans < 0 Then
    MsgBox(16, "Fehler", "Die Transparenz darf nur zwischen 0 und 255 liegen!")
    Return 0
    EndIf
    WinSetTrans($Title, "", $iTrans)
    EndFunc ;==>_ChangeTransparent

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

    Func _AddTopmost()
    Local $Title = GUICtrlRead($ctrl_TopmostWindowTitleInput)
    If $Title = "" Then Return 0
    WinSetOnTop($Title, "", 1)
    EndFunc ;==>_AddTopmost

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

    Func _DelTopmost()
    Local $Title = GUICtrlRead($ctrl_TopmostWindowTitleInput)
    If $Title = "" Then Return 0
    WinSetOnTop($Title, "", 0)
    EndFunc ;==>_DelTopmost

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

    Func _ChangeSize()
    Local $Title = GUICtrlRead($ctrl_ActuallyTitleInput)
    Local $NewWidth = GUICtrlRead($ctrl_SizeWidthInput)
    If $NewWidth > @DesktopWidth Then Return 0
    Local $NewHeight = GUICtrlRead($ctrl_SizeHeightInput)
    If $NewHeight > @DesktopHeight Then Return 0
    Local $Width = $a_WinPos[2]
    Local $Height = $a_WinPos[3]
    If $Title = "" Then Return 0
    WinSetState($Title, "", @SW_RESTORE)
    WinMove($Title, "", Default, Default, $NewWidth, $NewHeight)
    EndFunc ;==>_ChangeSize

    [/autoit]
    • Offizieller Beitrag

    Ab Zeile 190 das einfügen:

    [autoit]

    Case $Alles = $GUI_CHECKED
    $aWinList = WinList()
    If IsArray($aWinList) Then
    GUICtrlDelete($ctrl_TitleList)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    For $i = 1 To $aWinList[0][0] Step +1
    If $aWinList[$i][0] <> "" Then
    GUICtrlSetData($ctrl_TitleList, $aWinList[$i][0])
    EndIf
    Next
    EndIf

    [/autoit]


    Wenn du nur die sichtbaren Fenster haben willst, mußt du noch mit IsVisible abfragen.

    [autoit]

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf

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

    EndFunc

    [/autoit]


    Beispiel findest du in der Hilfe von WinList.

    Edit : Nur sichtbare Fenster gehen so, ab Zeile 190:

    [autoit]

    Case $Alles = $GUI_CHECKED
    $aWinList = WinList()
    If IsArray($aWinList) Then
    GUICtrlDelete($ctrl_TitleList)
    $ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
    For $i = 1 To $aWinList[0][0] Step +1
    If $aWinList[$i][0] <> "" And IsVisible($aWinList[$i][1]) Then
    GUICtrlSetData($ctrl_TitleList, $aWinList[$i][0])
    EndIf
    Next
    EndIf

    [/autoit]


    Nicht vergessen, die Funktion IsVisible in dein Script zu kopieren.