Scrollrad "emulieren" - scrollen per Code
-
Hallo Zusammen,
ich suche nach einer Möglichkeit das Drehen am Scrollrad zu emulieren. Leider finde ich bis dato nur ein verwendbares vb.net Beispiel welches aber genau meinen Anforderungen entspricht:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Integer) As Short Private Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cbuttons As Integer, ByVal dwExtraInfo As Integer) Private Const MOUSEEVENT_WHEEL = &H800 'die entscheidende constante [dwFlag] Dim SCROLLUP As Integer = 120 'Scrollgeschwindigkeit hoch Dim SCROLLDOWN As Integer = -120 'Scrollgeschwindigkeit runter 'call: 'mouse_event(MOUSEEVENT_WHEEL, 0, 0, SCROLLDOWN, 0)
Natürlich habe ich jetzt keine Lust auf .net Framework, soll im Endeffekt crossplattform-tauglich werden darum hatte ich mir C++ ausgemalt. (Eine kleine Anmerkung noch nebenbei: Pfeiltasten / Bildlauf erfüllen meine Anforderungen definitiv nicht).
Kennt / hat jemand Code für das Scrollrad oder kann mir Hinweise geben wie ich das obrige Beispiel in C++ realisieren kann?
Vielen Dank
Gruß Michael
-
Genauso. Was hat (außer der Sprache) das bitte mit .Net zu tun?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx
-
Hallo Martin,
da hast du jetzt natürlich einen Anfänger auf dem falschen Fuß erwischt. Nichtmal den .NET Code kann ich richtig lesen. Meinst du du könntest mir ein bisschen Helfen diese Zeilen in C++ zu realisieren? Vielleicht hast du ja ein paar Links wo ich das nachlesen könnte wie ich das am besten realisiere?
Danke
Michael
-
Erster Fehler:
soll im Endeffekt crossplattform-tauglich werden darum hatte ich mir C++ ausgemalt.
Dass postest du im WinAPI Forum?
Naja ^^ mit einem HWND wüsste ich was:
Vertikal:SendMessage(HWND, WM_VSCROLL, SB_BOTTOM, 0);
Horizontal:
SendMessage(HWND, WM_HSCROLL, SB_BOTTOM, 0);
SB_BOTTOM setzt es ganz nach unten,
was du anderes einsetzen kannst musst du ausprobieren.
Du könntest es mit einer for-Schleife und einem Sleep lösen.
MFG MultiStrikeAUT
-
Sry für Doppelpost,
habe Martin's Post übersehen.
Du könntest es so realisieren:mouse_event(MOUSEEVENTF_WHEEL,NULL,NULL,100/*100 nach oben, bei negativem wert nach unten*/,NULL);