Hallo!
Ich bin gerade dabei einen Desktop-Switcher aufzubauen, doch leider will er nicht, wie ich will
Was mache ich falsch
Source-Code
#include <Array.au3>
#include <Constants.au3>
#include <windowsConstants.au3>
Global $Windows_Desktop[4][1000], $aWindows[1][1], $hUser32 = DllOpen('user32.dll'), $iEx_Style, $iCounter = 0
$aWindows = _ReadWindows()
For $i = 0 To UBound($aWindows, 2) - 1
$Windows_Desktop[0][$i] = $aWindows[$i][0]
Next
HotKeySet("^1", "_1")
HotKeySet("^2", "_2")
HotKeySet("^3", "_3")
HotKeySet("^4", "_4")
Func _1()
_switch(1)
EndFunc ;==>_1
Func _2()
_switch(2)
EndFunc ;==>_2
Func _3()
_switch(3)
EndFunc ;==>_3
Func _4()
_switch(4)
EndFunc ;==>_4
Func _ReadWindows()
Local $aWin = WinList()
For $i = 1 To $aWin[0][0]
$iEx_Style = BitAND(GetWindowLong($aWin[$i][1], $GWL_EXSTYLE), $WS_EX_TOOLWINDOW)
Local $iStyle = BitAND(WinGetState($aWin[$i][1]), 2)
If $iEx_Style <> -1 And Not $iEx_Style And $iStyle Then
ReDim $aWindows[$iCounter + 1][1]
$aWindows[$iCounter][0] = $aWin[$i][0]
$iCounter += 1
EndIf
Next
Return $aWindows
EndFunc ;==>_ReadWindows
Func GetWindowLong($hWnd, $iIndex, $hUser = 'user32.dll')
Local $Ret = DllCall($hUser, 'int', 'GetWindowLong', 'hwnd', $hWnd, 'int', $iIndex)
If Not @error Then Return $Ret[0]
Return SetError(-1, 0, -1)
EndFunc ;==>GetWindowLong
Func OnAutoItExitFunc()
DllClose($hUser32)
EndFunc ;==>OnAutoItExitFunc
Func _switch($Desktop)
$aWindows = _ReadWindows()
For $i = 0 To UBound($aWindows, 2) - 1
$Windows_Desktop[$Desktop - 1][$i] = $aWindows[$i][0]
Next
For $i = 0 To 3
For $j = 0 To UBound($Windows_Desktop, 2)
If $Desktop - 1 <> $i Then
WinSetState($Windows_Desktop[$i][$j], "", @SW_HIDE)
Else
WinSetState($Windows_Desktop[$i][$j], "", @SW_SHOW)
EndIf
Next
Next
ToolTip("Desktop " & $Desktop)
EndFunc ;==>_switch
While 1
Sleep(100)
WEnd
Die Fenster werden unkontrolliert ein und ausgeblendet und der Tool-Tip wird nicht angezeigt...