- 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.
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.
So:
[autoit]WinGetTitle("[active]")
[/autoit]Thx.
Das ist ja Einfach.
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:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;~ 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 = ""
#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 ###
_MakeTransparentCtrlDisabled()
_MakeTopmostCtrlDisabled()
_MakeSizeCtrlDisabled()
_MakeWinTitleCtrlDisabled()
_MakeCheckboxesDisabled()
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()
EndSwitch
WEnd
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)
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
Func _DeleteList()
GUICtrlDelete($ctrl_TitleList)
$ctrl_TitleList = GUICtrlCreateList("", 8, 8, 217, 370)
EndFunc ;==>_DeleteList
Func _MakeTopmostCtrlDisabled()
GUICtrlSetState($ctrl_TopmostButton, $GUI_DISABLE)
GUICtrlSetState($ctrl_TopmostEntfernenButton, $GUI_DISABLE)
GUICtrlSetState($ctrl_TopmostWindowTitleInput, $GUI_DISABLE)
EndFunc ;==>_MakeTopmostCtrlDisabled
Func _MakeTransparentCtrlDisabled()
GUICtrlSetState($ctrl_TransparentButton, $GUI_DISABLE)
GUICtrlSetState($ctrl_TransparentInput, $GUI_DISABLE)
GUICtrlSetState($ctrl_TransparentUpdown, $GUI_DISABLE)
EndFunc ;==>_MakeTransparentCtrlDisabled
Func _MakeSizeCtrlDisabled()
GUICtrlSetState($ctrl_SizeButton, $GUI_DISABLE)
GUICtrlSetState($ctrl_SizeHeightInput, $GUI_DISABLE)
GUICtrlSetState($ctrl_SizeWidthInput, $GUI_DISABLE)
EndFunc ;==>_MakeSizeCtrlDisabled
Func _MakeWinTitleCtrlDisabled()
GUICtrlSetState($ctrl_ChangeTitleButton, $GUI_DISABLE)
GUICtrlSetState($ctrl_ChangeTitleNewInput, $GUI_DISABLE)
EndFunc ;==>_MakeWinTitleCtrlDisabled
Func _MakeCheckboxesDisabled()
GUICtrlSetState($ctrl_TopmostCheckbox, $GUI_DISABLE)
GUICtrlSetState($ctrl_TransparentCheckbox, $GUI_DISABLE)
EndFunc ;==>_MakeCheckboxesDisabled
Func _MakeCheckboxesEnabled()
GUICtrlSetState($ctrl_TopmostCheckbox, $GUI_ENABLE)
GUICtrlSetState($ctrl_TransparentCheckbox, $GUI_ENABLE)
EndFunc ;==>_MakeCheckboxesEnabled
Func _MakeWinTitleCtrlEnabled()
GUICtrlSetState($ctrl_ChangeTitleButton, $GUI_ENABLE)
GUICtrlSetState($ctrl_ChangeTitleNewInput, $GUI_ENABLE)
EndFunc ;==>_MakeWinTitleCtrlEnabled
Func _MakeSizeCtrlEnabled()
GUICtrlSetState($ctrl_SizeButton, $GUI_ENABLE)
GUICtrlSetState($ctrl_SizeHeightInput, $GUI_ENABLE)
GUICtrlSetState($ctrl_SizeWidthInput, $GUI_ENABLE)
EndFunc ;==>_MakeSizeCtrlEnabled
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
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
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
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
Func _AddTopmost()
Local $Title = GUICtrlRead($ctrl_TopmostWindowTitleInput)
If $Title = "" Then Return 0
WinSetOnTop($Title, "", 1)
EndFunc ;==>_AddTopmost
Func _DelTopmost()
Local $Title = GUICtrlRead($ctrl_TopmostWindowTitleInput)
If $Title = "" Then Return 0
WinSetOnTop($Title, "", 0)
EndFunc ;==>_DelTopmost
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
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
Wenn du nur die sichtbaren Fenster haben willst, mußt du noch mit IsVisible abfragen.
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
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
Nicht vergessen, die Funktion IsVisible in dein Script zu kopieren.