Post by fump2000 » 03 Mar 2015, 16:51
Hallo erstmal
Ich steh grad auf dem Schlauch...
Im Code vom DockWin gibt es diesen Teil zum wiederherstellen der Fenster:
Code: Select all
Loop, Parse, SECTION_TEXT,`n
{
SectionFound:=1
Win_Title:="", Win_x:=0 , Win_y:=0, Win_width:=0, Win_height:=0, Win_maximized:=0
;Parse the elements in the CSV to extract recorded data
Loop, Parse, A_LoopField, CSV
{
EqualPos:=InStr(A_LoopField,"=")
Var:=SubStr(A_LoopField,1,EqualPos-1)
Val:=SubStr(A_LoopField,EqualPos+1)
IfInString, ParmVals, %Var%
{
;Remove any surrounding double quotes (")
If (SubStr(Val,1,1)=Chr(34))
{
StringMid, Val, Val, 2, StrLen(Val)-2
}
Win_%Var%:=Val
}
}
;Seems to be an iteration problem...
if (Win_Title = "")
continue
;Make sure we're matching something new each time we move a window
WinGet, matches, list, %Win_Title%,,,
m_id := ""
Loop, %matches%
{
cid := matches%A_Index%
Loop, %handle_list%
{
h := handle_list%A_Index%
if (h = cid)
{
m_id := cid
WinGet, MainState, MinMax, ahk_id %m_id%
msgbox % "Win_maximized=" Win_maximized " - MainState=" MainState " - m_id=" m_id
handle_list%A_Index% := 0
break 2
}
}
}
if (Win_maximized=1)
msgbox buh
If ((Win_maximized = 1) and (m_id not = ""))
{
if (MainState=0 || MainState=-1)
msgbox
WinRestore, ahk_id %m_id%
WinActivate, ahk_id %m_id%
WinMaximize, ahk_id %m_id%
PostMessage, 0x112, 0xF030,,, ahk_id %m_id% ; 0x112 = WM_SYSCOMMAND, 0xF030 = SC_MAXIMIZE
WinGetTitle, t, ahk_id %m_id%
msgbox
} Else If ( (StrLen(Win_Title) > 0) and (m_id not = "") )
{
WinRestore, ahk_id %m_id%
WinActivate, ahk_id %m_id%
WinGetTitle, t, ahk_id %m_id%
WinMove, A,,%Win_x%,%Win_y%,%Win_width%,%Win_height%
}
}
Die Sache ist die, die Variable
Win_maximized wird zwar erstellt und hat auch den aus der INI ausgelesenen Wert bzw. der eingelesene String wird geparst und so kommt der Wert 1 oder 0 in die Variable.
Lese ich den Teil aus mit
msgbox % "Win_maximized=" Win_maximized " - MainState=" MainState " - m_id=" m_id erhalte ich auch die Werte.
Jedoch wird die Variable
Win_maximized in der anschließenden
if Prüfung einfach übergangen... Ich kappier nicht warum. Baue ich eine weitere Var ein und befülle sie mit einem Wert kann ich diesen auch normal per
if prüfen aber bei dieser Var geht es nicht.
Kann mir irgendwer sagen warum das so sein kann? Ich verzweifel hier noch. Ich erhalte kurz vor her per
msgbox noch genau die Werte die in der Bedingung geprüft werden und dennoch wird sie übergangen?! Ist für mich völlig unlogisch...
Hilfe
// EDIT:
Komisch... Ich verstehe es einfach nicht. Ändere ich die
if Prüfung von
If ((Win_maximized = 1) and (m_id not = "")) in
If ((Win_maximized > 0) and (m_id not = "")) ab dann funktioniert es. In der
msgbox ist der Wert für
Win_maximized aber immer 1 nicht mehr und auch nicht weniger.
Was läuft da schief???
Hallo erstmal :)
Ich steh grad auf dem Schlauch...
Im Code vom DockWin gibt es diesen Teil zum wiederherstellen der Fenster:
[code=autohotkey file=Script.ahk]Loop, Parse, SECTION_TEXT,`n
{
SectionFound:=1
Win_Title:="", Win_x:=0 , Win_y:=0, Win_width:=0, Win_height:=0, Win_maximized:=0
;Parse the elements in the CSV to extract recorded data
Loop, Parse, A_LoopField, CSV
{
EqualPos:=InStr(A_LoopField,"=")
Var:=SubStr(A_LoopField,1,EqualPos-1)
Val:=SubStr(A_LoopField,EqualPos+1)
IfInString, ParmVals, %Var%
{
;Remove any surrounding double quotes (")
If (SubStr(Val,1,1)=Chr(34))
{
StringMid, Val, Val, 2, StrLen(Val)-2
}
Win_%Var%:=Val
}
}
;Seems to be an iteration problem...
if (Win_Title = "")
continue
;Make sure we're matching something new each time we move a window
WinGet, matches, list, %Win_Title%,,,
m_id := ""
Loop, %matches%
{
cid := matches%A_Index%
Loop, %handle_list%
{
h := handle_list%A_Index%
if (h = cid)
{
m_id := cid
WinGet, MainState, MinMax, ahk_id %m_id%
msgbox % "Win_maximized=" Win_maximized " - MainState=" MainState " - m_id=" m_id
handle_list%A_Index% := 0
break 2
}
}
}
if (Win_maximized=1)
msgbox buh
If ((Win_maximized = 1) and (m_id not = ""))
{
if (MainState=0 || MainState=-1)
msgbox
WinRestore, ahk_id %m_id%
WinActivate, ahk_id %m_id%
WinMaximize, ahk_id %m_id%
PostMessage, 0x112, 0xF030,,, ahk_id %m_id% ; 0x112 = WM_SYSCOMMAND, 0xF030 = SC_MAXIMIZE
WinGetTitle, t, ahk_id %m_id%
msgbox
} Else If ( (StrLen(Win_Title) > 0) and (m_id not = "") )
{
WinRestore, ahk_id %m_id%
WinActivate, ahk_id %m_id%
WinGetTitle, t, ahk_id %m_id%
WinMove, A,,%Win_x%,%Win_y%,%Win_width%,%Win_height%
}
}[/code]
Die Sache ist die, die Variable [c]Win_maximized[/c] wird zwar erstellt und hat auch den aus der INI ausgelesenen Wert bzw. der eingelesene String wird geparst und so kommt der Wert 1 oder 0 in die Variable.
Lese ich den Teil aus mit [c]msgbox % "Win_maximized=" Win_maximized " - MainState=" MainState " - m_id=" m_id[/c] erhalte ich auch die Werte.
Jedoch wird die Variable [c]Win_maximized[/c] in der anschließenden [c]if[/c] Prüfung einfach übergangen... Ich kappier nicht warum. Baue ich eine weitere Var ein und befülle sie mit einem Wert kann ich diesen auch normal per [c]if[/c] prüfen aber bei dieser Var geht es nicht.
Kann mir irgendwer sagen warum das so sein kann? Ich verzweifel hier noch. Ich erhalte kurz vor her per [c]msgbox[/c] noch genau die Werte die in der Bedingung geprüft werden und dennoch wird sie übergangen?! Ist für mich völlig unlogisch...
Hilfe :)
// EDIT:
Komisch... Ich verstehe es einfach nicht. Ändere ich die [c]if[/c] Prüfung von [c]If ((Win_maximized = 1) and (m_id not = ""))[/c] in [c]If ((Win_maximized > 0) and (m_id not = ""))[/c] ab dann funktioniert es. In der [c]msgbox[/c] ist der Wert für [c]Win_maximized[/c] aber immer 1 nicht mehr und auch nicht weniger.
Was läuft da schief???