GlockMane88
Lt. Commander
- Registriert
- Aug. 2008
- Beiträge
- 1.244
Hi Leute,
ich habe ein AHK Script gefunden und für meine Zwecke angepasst, welches die Scrollposition eines Fensters speichert, dann das Fenster aktualisiert und die Scrollposition wiederherstellt..
Leider macht das Script nur eine Art Vorschau (Balken wird restored, aber ausgegraut und geht dann wieder zurück, bleibt also nicht an der gespeicherten Position stehen)..
Nun probiere ich schon eine Stunde, komme allerdings nicht weiter, ich denke es geht um diesen Aufruf:
Wahrscheinlich ist das eine absolute Kleinigkeit, aber ich komme einfach nicht drauf.. Danke schonmal!
Hier das komplette Script:
ich habe ein AHK Script gefunden und für meine Zwecke angepasst, welches die Scrollposition eines Fensters speichert, dann das Fenster aktualisiert und die Scrollposition wiederherstellt..
Leider macht das Script nur eine Art Vorschau (Balken wird restored, aber ausgegraut und geht dann wieder zurück, bleibt also nicht an der gespeicherten Position stehen)..
Nun probiere ich schon eine Stunde, komme allerdings nicht weiter, ich denke es geht um diesen Aufruf:
Code:
r := DllCall("SetScrollInfo", "UInt", sbHwnd, "Int", SB_VERT, "UInt", &scrollInfo, "UInt", 1)
Wahrscheinlich ist das eine absolute Kleinigkeit, aber ich komme einfach nicht drauf.. Danke schonmal!
Hier das komplette Script:
Code:
#Include DllCallStruct.ahk
SB_VERT = 1
SIF_POS = 4
SCROLLINFO_SIZE := 7 * 4
method = NEW
^F5::
progHwnd := WinExist("A")
ControlGet sbHwnd, Hwnd, , SysListView323, ahk_id %progHwnd%
If method = OLD
{
pos := DllCall("GetScrollPos", "UInt", sbHwnd, "Int", SB_VERT)
}
Else
{
VarSetCapacity(scrollInfo, SCROLLINFO_SIZE, 0)
SetInteger(scrollInfo, SCROLLINFO_SIZE)
SetInteger(scrollInfo, SIF_POS, 4)
r := DllCall("GetScrollInfo", "UInt", sbHwnd, "Int", SB_VERT, "UInt", &scrollInfo)
}
If (ErrorLevel != 0 || A_LastError != 0)
; Can be ERROR_NO_SCROLLBARS=1447 || ERROR_INVALID_WINDOW_HANDLE=1400
MsgBox Oops! (%A_LastError% / %ErrorLevel%)
;~ MsgBox <%sbHwnd%> %pos% (%ErrorLevel% & %A_LastError%)
;~ MsgBox % DumpDWORDs(scrollInfo, SCROLLINFO_SIZE)
Sleep, 500
Send {F5}
Sleep, 500
If method = OLD
{
r := DllCall("SetScrollPos", "UInt", sbHwnd, "Int", SB_VERT
, "Int", pos, "UInt", 0)
}
Else
{
r := DllCall("SetScrollInfo", "UInt", sbHwnd, "Int", SB_VERT
, "UInt", &scrollInfo, "UInt", 1)
}
If (ErrorLevel != 0 || A_LastError != 0)
; Can be ERROR_NO_SCROLLBARS=1447 || ERROR_INVALID_WINDOW_HANDLE=1400
MsgBox Oops! (%A_LastError% / %ErrorLevel%)
;~ MsgBox %r% <%sbHwnd%> %pos% (%ErrorLevel% & %A_LastError%)
Return