In [1]:
import time
import ctypes

memo

key keycode
PageUp 33
PageDown 34
End 35
Home 36
37
38
39
40

これどうやって左に寄せるのかよくわからなかった(´・ω・`)

In [2]:
class TestScroll(object):
    
    def __init__(self, hwnd):
        self._hwnd = hwnd
        self._msg = ctypes.windll.user32.RegisterWindowMessageA(
            b'MetaTrader4_Internal_Message'
        )
        self._sm = ctypes.windll.user32.SendMessageA
    
    def fw(self):
        self._sm(self._hwnd, 0x0100, 39, 0)
        self._sm(self._hwnd, 0x0101, 39, 0)
    
    def bk(self):
        self._sm(self._hwnd, 0x0100, 37, 0)
        self._sm(self._hwnd, 0x0101, 37, 0)
    
    def home(self):
        self._sm(self._hwnd, 0x0100, 36, 0)
        self._sm(self._hwnd, 0x0101, 36, 0)
    
    def end(self):
        self._sm(self._hwnd, 0x0100, 35, 0)
        self._sm(self._hwnd, 0x0101, 35, 0)
    
    def pageup(self):
        self._sm(self._hwnd, 0x0100, 33, 0)
        self._sm(self._hwnd, 0x0101, 33, 0)
    
    def pagedown(self):
        self._sm(self._hwnd, 0x0100, 35, 0)
        self._sm(self._hwnd, 0x0101, 35, 0)
    
    def mouse_fw(self):
        # WM_MOUSEWHEEL 0x020A
        WHEEL_DELTA = 120
        delta = WHEEL_DELTA;
        w = (delta << 16)
        self._sm(self._hwnd, 0x020A, w, 0)
    
    def mouse_bk(self):
        WHEEL_DELTA = 120
        delta = WHEEL_DELTA;
        w = (delta << 16)
        self._sm(self._hwnd, 0x020A, -w, 0)
In [3]:
test = TestScroll(532604)

home endキーでのスクロール

In [4]:
test.home()
time.sleep(0.5)
test.end()
time.sleep(0.5)
test.home()
time.sleep(0.5)
test.end()

矢印キーでのスクロール

In [5]:
n = 1000
for i in range(n):
    test.fw()    
for i in range(n):
    test.bk()
for i in range(n):
    test.fw()
for i in range(n):
    test.bk()

pageup pagedownキーでのスクロール

In [6]:
n = 2
for i in range(n):
    test.pagedown()
time.sleep(0.5)
for i in range(n):
    test.pageup()
time.sleep(0.5)
for i in range(n):
    test.pagedown()
time.sleep(0.5)
for i in range(n):
    test.pageup()

マウスホイールでのスクロール

In [8]:
n = 1000
for i in range(n):
    test.mouse_fw()
time.sleep(0.5)
for i in range(n):
    test.mouse_bk()
time.sleep(0.5)
for i in range(n):
    test.mouse_fw()
time.sleep(0.5)
for i in range(n):
    test.mouse_bk()
time.sleep(0.5)
for i in range(n):
    test.mouse_fw()