Quote:
Originally Posted by Ludder231
Ich habs jz einfach so gemacht un es klappt perfekt...
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include<misc.au3>
#include<string.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("ICQ WS", 139, 84, 199, 138)
$Button1 = GUICtrlCreateButton("Save Coords ", 32, 48, 75, 25)
$Input1 = GUICtrlCreateInput("Window Title", 8, 16, 121, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $handle, $input1, $position
HotKeySet("{F1}", "resizer")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $button1
if WinExists(guictrlread($input1)) AND IsVisible($handle) Then
if isvisible($handle) = 0 Then
msgbox(16, "", "The Windows must be visible")
endif
$position = WinGetPos(guictrlread($input1))
if $position[0] AND $position[1] < 0 Then
msgbox(16, "Error", "Window must be active!")
else
IniWrite(@windowsdir&"\ICQWS.ini", "X", "X", $position[0])
IniWrite(@windowsdir&"\ICQWS.ini", "Y", "Y", $position[1])
IniWrite(@windowsdir&"\ICQWS.ini", "W", "W", $position[2])
IniWrite(@windowsdir&"\ICQWS.ini", "H", "H", $position[3])
msgbox(0, "ICQ WS", "X= "&$position[0]&" Y= "&$position[1]& @CRLF & _
" W= "&$position[2]&" H= "&$position[3])
endif
Else
MsgBox(16, "Not Found", "Window does not exist")
endif
EndSwitch
wend
func resizer()
if not $position = iniread(@windowsdir&"\ICQWS.ini", "W", "W", "") AND iniread(@windowsdir&"\ICQWS.ini", "H", "H", "") Then
WinMove(GUICtrlRead($input1), "", iniread(@windowsdir&"\ICQWS.ini", "X", "X", ""), IniRead(@windowsdir&"\ICQWS.ini", "Y", "Y", ""), Iniread(@windowsdir&"\ICQWS.ini", "W", "W", ""), Iniread(@windowsdir&"\ICQWS.ini", "H", "H", ""))
endif
EndFunc
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return true
Else
Return false
EndIf
EndFunc
|
von dem was du da geschrieben hast ergibt leider nur wenig einen sinn...
du nutzt
obwohl die einzige stelle an der du $handle definiert hast, oben bei den globalen definitionen sitzt.
dh $handle ist dein gesamtes script hindurch einfach nur true...
IsVisible schaut ob das fenster mit dem handle $handle (True) sichtbar ist.
da handles iterativ vergeben werden, sollte das erste fenster welches das os öffnet (gehe mal davon aus das dies der explorer ist), das handle True (1) haben.
dein script schaut also ständig nach, ob der explorer sichtbar ist.
Falls dies der Fall ist, und IsVisible(1) True ausgibt, überprüfst du ob IsVisible(1) False ausgibt, was ja auchnicht allzuviel sinn macht.
danach kommt folgende codestelle:
Code:
if $position[0] AND $position[1] < 0 Then
msgbox(16, "Error", "Window must be active!")
[...]
leider ergibt auch dies keinen sinn.
WinGetPos bestimmt immer die aktuelle position des fensters. hierbei ist egal ob das fenster aktiv ist oder nicht.
auch deine resize funktion ist weitestgehend unbrauchbar.
Code:
func resizer()
if not $position = iniread(@windowsdir&"\ICQWS.ini", "W", "W", "") AND iniread(@windowsdir&"\ICQWS.ini", "H", "H", "") Then
WinMove(GUICtrlRead($input1), "", iniread(@windowsdir&"\ICQWS.ini", "X", "X", ""), IniRead(@windowsdir&"\ICQWS.ini", "Y", "Y", ""), Iniread(@windowsdir&"\ICQWS.ini", "W", "W", ""), Iniread(@windowsdir&"\ICQWS.ini", "H", "H", ""))
endif
EndFunc
$position ist definiert als 4 elementiges 1 dimensionales array.
--> $position wird immer 0 sein.
wenn sich dein fenster also nicht an x position 0 befindet, wird es auf die alte position zurück gesetzt.
davon abgesehen finde ich die idee ständig eine ini anzulegen viel zu umständlich.
für so etwas legt man sich variablen zum speichern der alten werte an.