#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=Pic\icon.ico
#AutoIt3Wrapper_outfile=Window Handler.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_Fileversion=1.1.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Skilkor(http://www.autoit.de)
#AutoIt3Wrapper_Res_Language=1031
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
;==============
#region ### #include ###
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <Array.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WinAPI.au3>
#endregion ### #include ###
;=============
#region ### Global ###
Global $WinStateCode, $LabelName, $LabelPosX, $LabelPosY, $WinWidth, $WinHeigh, $Status, $MUp, $MLeft, $MRight, $MDown, $GUp, $GLeft, $GRight, $GDown, $Aktual, $Safe, $Gesp, $Move, $Glob_Res, $Art, $Ini_Op
;~
Global $Grp[5][5] = [['Optionen', 5, 400, 330, 50] ,['Desktop Fenster', 5, 0, 330, 400] ,['Fenster Info', 340, 0, 180, 230], _
['Fensterposition Verschieben',340,230,180,90] ,['Fenstergrösse Verändern',340,320,180,90]]
;~
Global $Label[8][6] = [[$LabelName, 'Fenster Name: ', 350, 15, 160, 75] ,[$LabelPosX, 'Pos X: ', 350, 90, 160, 20] ,[$LabelPosY, 'Pos Y: ', 350, 110, 160, 20], _
[$WinWidth, 'Breite: ', 350, 130, 160, 20] ,[$WinHeigh, 'Höhe: ', 350, 150, 160, 20] ,[$Status, 'Status: ', 350, 170, 160, 20], _
[$Glob_Res, 'Globale Auflösung: ',350,190,160,20] ,[$Gesp, 'Gespeichert?: ',350,210,160,20]]
;~
Global $MoveSec[4][6] = [[$MUp, @ScriptDir & '\Pic\1.jpg',420,250,20,20] ,[$MLeft, @ScriptDir & '\Pic\2.jpg',400,270,20,20], _
[$MRight, @ScriptDir & '\Pic\3.jpg', 440,270,20,20],[$MDown, @ScriptDir & '\Pic\4.jpg',420,290,20,20]]
;~
Global $Gro[4][6] = [[$GUp, @ScriptDir & '\Pic\1.jpg',420,340,20,20] ,[$GLeft, @ScriptDir & '\Pic\2.jpg',400,360,20,20], _
[$GRight, @ScriptDir & '\Pic\3.jpg', 440,360,20,20],[$GDown, @ScriptDir & '\Pic\4.jpg',420,380,20,20]]
;~
Global $Button[4][6] = [[$Aktual, 'Aktuallisieren', 10, 415, 70, 25] ,[$Safe, 'Speichern', 85, 415, 60, 25] ,[$Move, 'Wiederherstellen', 150, 415, 90,25], _
[$Ini_Op, 'Ini Öffnen',245,415,60,25]]
;~
Global $ListView[5] = ['', 15, 15, 310, 375]
Global $Header = 'Nr|Titel|Status'
Global $LV_Style = BitOR($WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE)
Global $LV_EX_STYLE = BitOR($LVS_EX_SUBITEMIMAGES, $LVS_EX_DOUBLEBUFFER, $LVS_EX_FULLROWSELECT)
;~
Global $WinList = WinList()
;~
Global $WinStateCode[11][2] = [['1', 'Existiert'] ,['2', 'Sichtbar'] ,['4', 'Freigegeben'], _
['8', 'Aktiv'] ,['16', 'Minimiert'] ,['32', 'Maximiert'], _
['5', $WinStateCode[0][1]] ,['7', $WinStateCode[1][1]] ,['23', $WinStateCode[4][1]], _
['39', $WinStateCode[5][1]] ,['47', $WinStateCode[5][1]]]
;~
Global $ReadListView = GUICtrlRead(GUICtrlRead($ListView))
;~
Global $aRes = _GetGlobalResolution()
#endregion ### Global ###
;=============
#region ### GUI ###
#region ### $hGui ###
$hGui = GUICreate('Window Handler Prog', 525, 455, 500, 370)
#endregion ### $hGui ###
;=============
#region ### Gui Aufbau ###
For $i = 0 To UBound($Label) - 1
$Label[$i][0] = GUICtrlCreateLabel($Label[$i][1], $Label[$i][2], $Label[$i][3], $Label[$i][4], $Label[$i][5])
Next
;~
For $i = 0 To UBound($Grp) - 1
GUICtrlCreateGroup($Grp[$i][0], $Grp[$i][1], $Grp[$i][2], $Grp[$i][3], $Grp[$i][4])
Next
;~
For $i = 0 To UBound($MoveSec) - 1
$MoveSec[$i][0] = GUICtrlCreatePic($MoveSec[$i][1], $MoveSec[$i][2], $MoveSec[$i][3], $MoveSec[$i][4], $MoveSec[$i][5])
Next
;~
For $i = 0 To UBound($Gro) - 1
$Gro[$i][0] = GUICtrlCreatePic($Gro[$i][1], $Gro[$i][2], $Gro[$i][3], $Gro[$i][4], $Gro[$i][5])
Next
#endregion ### Gui Aufbau ###
;=============
#region ### Listview ###
$ListView = GUICtrlCreateListView($Header, 15, 15, 310, 380, $LV_Style, $LV_EX_STYLE)
GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 0, 30)
GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 1, 200)
GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 2, 67)
;~
For $i = 0 To $WinList[0][0]
If $WinList[$i][0] <> '' And _IsVisible($WinList[$i][1]) Then
GUICtrlCreateListViewItem($i & '|' & $WinList[$i][0] & '|' & _WinState($i), $ListView)
EndIf
Next
#endregion ### Listview ###
;=============
#region ### Button ###
For $i = 0 To UBound($Button) - 1
$Button[$i][0] = GUICtrlCreateButton($Button[$i][1], $Button[$i][2], $Button[$i][3], $Button[$i][4], $Button[$i][5])
Next
#endregion ### Button ###
GUISetState(@SW_SHOW)
#endregion ### GUI ###
;=============
GUICtrlSetData($Label[6][0], 'Globale Auflösung: ' & $aRes[2] & 'x' & $aRes[3])
#region ### Gui Event ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button[0][0] ;Aktuallisieren Button
_Aktual()
Case $Button[1][0] ;Speichern Button
_Save()
Case $Button[2][0] ;zu gesp. Coords Bewegen Button
_Move()
Case $Button[3][0] ;Ini Öffnen
ShellExecute(@ScriptDir & '\Save Data.ini', '', '')
Case $MoveSec[0][0] ;Up Pic (Button)
_WinMoveSec(1)
Case $MoveSec[1][0] ;Left Pic (Button)
_WinMoveSec(2)
Case $MoveSec[2][0] ;Right Pic (Button)
_WinMoveSec(3)
Case $MoveSec[3][0] ;Down Pic (Button)
_WinMoveSec(4)
Case $Gro[0][0] ;Up Pic (Button)
_WinGroMove(1)
Case $Gro[1][0] ;Left Pic (Button)
_WinGroMove(2)
Case $Gro[2][0] ;Right Pic (Button)
_WinGroMove(3)
Case $Gro[3][0] ;Down Pic (Button)
_WinGroMove(4)
EndSwitch
;~
Select
Case $nMsg = 'clicked=' ;Wenn ein ListViewItem Ausgewählt/Angeklickt wird
_LVItemSelected()
EndSelect
WEnd
#endregion ### Gui Event ###
;=============
#region ### Functionen ###
;=============
#region ### _IsVisible() ###
Func _IsVisible($handle)
If BitAND(WinGetState($handle), 2) Then
Return 1
Else
Return 0
EndIf
EndFunc ;==>_IsVisible
#endregion ### _IsVisible() ###
;=============
#region ### _Aktual() ###
Func _Aktual()
_GUICtrlListView_DeleteAllItems($ListView)
;~
For $i = 0 To UBound($WinList) - 1
If $WinList[$i][0] <> '' And _IsVisible($WinList[$i][1]) Then
GUICtrlCreateListViewItem($i & '|' & $WinList[$i][0] & '|' & _WinState($i), $ListView)
EndIf
Next
EndFunc ;==>_Aktual
#endregion ### _Aktual() ###
;=============
#region ### _WinState($i) ###
Func _WinState($i)
For $a = 0 To UBound($WinStateCode) - 1
If $WinList[$i][0] = 'Window Handler Prog' Then
Return 'Maximiert'
EndIf
;~
If WinGetState($WinList[$i][0]) = $WinStateCode[$a][0] Then
Return $WinStateCode[$a][1]
EndIf
Next
EndFunc ;==>_WinState
#endregion ### _WinState($i) ###
;=============
#region ### _LVItemSelected() ###
Func _LVItemSelected()
If GUICtrlRead(GUICtrlRead($ListView)) = 0 Then
Return
EndIf
;~
If GUICtrlRead($Label[0][0]) = GUICtrlRead(GUICtrlRead($ListView)) Then
Return
ElseIf GUICtrlRead(GUICtrlRead($ListView)) = Not 0 Then
Sleep(100)
GUICtrlSetData($Label[0][0], 'Fenster Name: ' & @CRLF & _Splitt(2))
;~
For $i = 1 To UBound($Label) - 1
GUICtrlSetData($Label[$i][0], $Label[$i][1] & _WinPos($i))
Next
;~
GUICtrlSetData($Label[5][0], 'Status: ' & _Splitt(3))
;~
GUICtrlSetData($Label[6][0], 'Globale Auflösung: ' & $aRes[2] & 'x' & $aRes[3])
;~
GUICtrlSetData($Label[7][0], $Label[7][1] & _SafeVor())
EndIf
EndFunc ;==>_LVItemSelected
#endregion ### _LVItemSelected() ###
;=============
#region ### _Splitt() ###
Func _Splitt($Split = 0)
Local $RLV = GUICtrlRead(GUICtrlRead($ListView))
Local $SSplit = StringSplit($RLV, '|', 0)
;~
For $i = 0 To UBound($SSplit) - 1
If $Split >= 4 Then
Return
EndIf
;~
If $Split = $i Then
Return $SSplit[$i]
EndIf
Next
EndFunc ;==>_Splitt
#endregion ### _Splitt() ###
;=============
#region ### _WinPos() ###
Func _WinPos($Pos = 0)
Local $WinPos = WinGetPos(_Splitt(2))
;~
For $i = 1 To UBound($WinPos)
If $Pos = $i Then
Return $WinPos[$i - 1]
EndIf
Next
EndFunc ;==>_WinPos
#endregion ### _WinPos() ###
;=============
#region ### _Save() ###
Func _Save()
For $i = 1 To 4
IniWrite('Save Data.ini', _Splitt(2), $Label[$i][1], _WinPos($i))
Next
FileWrite('Save Data.ini', @CRLF)
EndFunc ;==>_Save
#endregion ### _Save() ###
;=============
#region ### _Move() ###
Func _Move()
Local $Ini[5] = ['', '', '', '', '']
For $i = 0 To 4
$Ini[$i] = IniRead('Save Data.ini', _Splitt(2), $Label[$i][1], '')
Next
;~
WinMove(_Splitt(2), '', $Ini[1], $Ini[2], $Ini[3], $Ini[4])
EndFunc ;==>_Move
#endregion ### _Move() ###
;=============
#region ### _GetGlobalResolution() ###
Func _GetGlobalResolution()
Local $aRes[4], $hWindow, $stRET
$hWindow = _WinAPI_GetDesktopWindow()
$stRET = _WinAPI_GetWindowPlacement($hWindow)
If Not @error Then
$aRes[0] = DllStructGetData($stRET, 'rcNormalPosition', 1) ; left
$aRes[1] = DllStructGetData($stRET, 'rcNormalPosition', 2) ; top
$aRes[2] = DllStructGetData($stRET, 'rcNormalPosition', 3) ; right
$aRes[3] = DllStructGetData($stRET, 'rcNormalPosition', 4) ; bottom
Return $aRes
Else
Return SetError(1, 0, 0)
EndIf
EndFunc ;==>_GetGlobalResolution
#endregion ### _GetGlobalResolution() ###
;=============
#region ### _WinMoveSec() ###
Func _WinMoveSec($Art = 0)
For $i = 1 To 4
If $Art = 1 Then
WinMove(_Splitt(2), '', _WinPos(1), _WinPos(2), _WinPos(3), _WinPos(4) - 1)
ElseIf $Art = 2 Then
WinMove(_Splitt(2), '', _WinPos(1), _WinPos(2), _WinPos(3) - 1, _WinPos(4))
ElseIf $Art = 3 Then
WinMove(_Splitt(2), '', _WinPos(1), _WinPos(2), _WinPos(3) + 1, _WinPos(4))
ElseIf $Art = 4 Then
WinMove(_Splitt(2), '', _WinPos(1), _WinPos(2), _WinPos(3), _WinPos(4) + 1)
EndIf
Next
EndFunc ;==>_WinMoveSec
#endregion ### _WinMoveSec() ###
;=============
#region ### _WinGroMove() ###
Func _WinGroMove($Art = 0)
For $i = 1 To 4
If $Art = 1 Then
WinMove(_Splitt(2), '', _WinPos(1), _WinPos(2) - 1, _WinPos(3), _WinPos(4))
ElseIf $Art = 2 Then
WinMove(_Splitt(2), '', _WinPos(1) - 1, _WinPos(2), _WinPos(3), _WinPos(4))
ElseIf $Art = 3 Then
WinMove(_Splitt(2), '', _WinPos(1) + 1, _WinPos(2), _WinPos(3), _WinPos(4))
ElseIf $Art = 4 Then
WinMove(_Splitt(2), '', _WinPos(1), _WinPos(2) + 1, _WinPos(3), _WinPos(4))
EndIf
Next
EndFunc ;==>_WinGroMove
#endregion ### _WinGroMove() ###
;=============
#region ### _SafeVor() ###
Func _SafeVor()
Local $ini_vor = IniReadSection('Save Data.ini', _Splitt(2))
If IsArray($ini_vor) = 1 Then
Return 'Ja'
Else
Return 'Nein'
EndIf
EndFunc ;==>_SafeVor
#endregion ### _SafeVor() ###
;=============
#endregion ### Functionen ###