![]() |
externes Fenster um einen Pixelwert scrollen?
Hallo,
mittels
Delphi-Quellcode:
kann ich ein externes Fenster scrollen.
h := GetForeGroundWindow;
If h <> 0 then begin SendMessage(h, WM_VSCROLL, SB_PAGEUP, 0); end; Nur gibt es eine Möglichkeit ein Fenster um einen bestimmten Pixelwert zu scrollen? |
AW: externes Fenster um einen Pixelwert scrollen?
Delphi-Quellcode:
var
h:THandle; begin h := GetForeGroundWindow; If h <> 0 then begin SetScrollPos(h, SB_VERT, GetScrollPos(h,SB_VERT) - 1, true); end; end; |
AW: externes Fenster um einen Pixelwert scrollen?
Danke! - genau das was ich brauche
Aber irgendwie scheinen sich die Scrollbalken nicht dabei zu bewegen Wenn ich mir den Wert von GetScrollPos anschaue, dann seh ich, dass er sich reduziert, aber die Scrollbalken bewegen sich nicht |
AW: externes Fenster um einen Pixelwert scrollen?
*oben aufhäng*
|
AW: externes Fenster um einen Pixelwert scrollen?
Auch nicht, wenn du das Fenster mal anweist, sich komplett neu zu zeichnen?
|
AW: externes Fenster um einen Pixelwert scrollen?
Zitat:
Hab es so gemacht:
Delphi-Quellcode:
Wobei SetScrollPos durch den 3. Parameter das Fenster schon zum Neuzeichnen anweist (laut Doku)
If h <> 0 then
begin SetScrollPos(h, SB_VERT, GetScrollPos(h,SB_VERT) - 111, true); SendMessage(h, WM_PAINT, 0, 0); end; |
AW: externes Fenster um einen Pixelwert scrollen?
*nochmal nach oben häng*
|
AW: externes Fenster um einen Pixelwert scrollen?
Hallo,
hilft Dir vielleicht folgendes weiter (nur am Beispiel Inhalt nach unten scrollen)?:
Delphi-Quellcode:
Gruß
procedure TForm1.ScrollDown (const Delta : Integer);
var h : HWND; i : TScrollInfo; begin h := GetForegroundWindow; if h <> 0 then begin FillChar (i, SizeOf (TScrollInfo), 0); i.cbSize := SizeOf (TScrollInfo); i.fMask := SIF_ALL; if not GetScrollInfo (h, SB_VERT, i) then raise Exception.Create ('Fürchterlich martialische Fehlermeldung'); if i.nPage + i.nPos = i.nMax then begin // TODO: Wir sind am Ende des Inhalts und jetzt? // Nachfolgender Code sollte eventuell noch ausgeführt werden end; i.fMask := SIF_POS; i.nPos := i.nPos + Delta; ScrollWindow (h, 0, -Delta, nil, nil); SetScrollInfo (h, SB_VERT, i, True) end end |
AW: externes Fenster um einen Pixelwert scrollen?
Zitat:
Das hilft mir auf alle Fälle weiter! Aber eines noch: müsste es nicht eher
Delphi-Quellcode:
anstatt
if i.nPage + i.nPos >= i.nMax then
Delphi-Quellcode:
lauten?
if i.nPage + i.nPos = i.nMax then
Bei meinen Tests kam bei der Addition immer 1 mehr raus als nMax ergibt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz