Morgen,
ich versuche nun schon lange festzustellen ob alle Fenster minimiert sind und der Desktop sichtbar ist.
Ich komme aber zu keiner Lösung.
Wahrscheinlich zu früh.
Weiß wer ne Möglichkeit?
Morgen,
ich versuche nun schon lange festzustellen ob alle Fenster minimiert sind und der Desktop sichtbar ist.
Ich komme aber zu keiner Lösung.
Wahrscheinlich zu früh.
Weiß wer ne Möglichkeit?
Einfachste Möglichkeit > Sende 'Windows & D" dann wird alles minimiert
Möglichkeit 2. Hole dir eine Liste aller Fenster und frage deren zustand ab, wenn alle Minimized sind dann ist der Desktop sichtbar (ist ja logisch)
und sonst fällt mir auf die schnelle auch keine Lösung ein
Gruß Marvin
Ich will ja abfragen ob alles minimiert ist und nicht selber alles minimieren.
2. Möglichkeit hatte ich ja auch schon. Mach ich aber erst wenn nix anderes in Frage kommt.
Mach eine Abfrage ob das 'Fenster' "Program Manager" aktiv ist. So frage ich immer ab ob der Desktop aktiv ist.
ich versuche nun schon lange festzustellen ob alle Fenster minimiert sind und der Desktop sichtbar ist.
Ich komme aber zu keiner Lösung.
Alle Fenster minimiert, und der Desktop komplett sichtbar - oder nicht alle Fenster maximiert, und der Desktop (zumindest zu einem minimalen Teil) sichtbar?
Der Desktop muss zumindest angeklickt sein. D.h. ja, theoretisch könnten 50 Fenster geöffnet sein und man klickt durch eine kleine Lücke auf den Desktop und der Program Manager wäre aktiv, die anderen Fenster aber noch sichtbar - nur inaktiv.
Ansonsten würde mir auch nur die Liste einfallen wobei das einiges an Ressourcen und Zeit in Anspruch nimmt das alles "durchzukauen" Zumindest auf meinem Rechner
Hmm, habe mal versucht eine Funktion dafür zu schreiben, wo die Fenster aufgelistet werden und überprüft wird ob eines der Fenster aktiv ist.
Jedoch bekomme ich es wohl nicht ganz gebacken, da es nicht so läuft wie erwünscht.
Hier mal die Funktion :
$Test = _DesktopAktiv()
While 1
If $Test = 0 Then
MsgBox(64,"Desktop","Desktop aktiviert")
EndIf
WEnd
Func _DesktopAktiv()
$Fenster = WinList ()
$Check = 0
For $i = 1 to $Fenster[0][0] -1
If WinActive($Fenster[$i][0]) Then
$Check = 1
EndIf
Next
If $Check = 1 Then
return 1
Else
return 0
EndIf
EndFunc
Ich hab noch eine ich such die mal kurz raus.
Edit: Hab mich vertan, die Funktion macht etwas ähnliches. Hab ne Idee gehabt, aber die Funktioniert nicht ganz richtig:
#include <array.au3>
$aFenster = _Fenster()
_ArrayDisplay($aFenster)
While 1
$Desktop = _Desktop($aFenster)
ToolTip($Desktop)
Sleep(5)
WEnd
Func _Fenster()
Dim $aFenster[1][2]
$aWinlist = WinList()
If @error Then
Return -1
EndIf
Local $j = 0
For $i = 0 To $aWinlist[0][0]
$iState = WinGetState($aWinlist[$i][1])
If BitAND($iState, Or BitAND($iState, 2) And StringIsSpace($aWinlist[$i][1]) = 0 Then
$j += 1
ReDim $aFenster[$j + 1][2]
$aFenster[$j][0] = $aWinlist[$i][0]
$aFenster[$j][1] = $iState
EndIf
Next
$aFenster[0][0] = $j
Return $aFenster
EndFunc ;==>_Desktop
Func _Desktop($aFenster)
For $i = 1 To $aFenster[0][0]
If Not BitAND($aFenster[$i][1], 16) Then
If $aFenster[$i][0] <> "Program Manager" And $aFenster[$i][0] <> "Start" And $aFenster[$i][0] <> "" Then
Return 0
EndIf
EndIf
Next
Return 1
EndFunc
Das Problem ist das manche "Fenster" in der Liste erscheinen die keinen Namen haben. Dadurch funktioniert das ganze nicht...