私はいくつかのことを試しました。
まず:
GetScrollInfo(handle, (int)ScrollBarDirection.SB_VERT, ref si);
// Increase position by 1 pixels
si.nPos += 1;
// Reposition scroller
SetScrollInfo(handle, (int)ScrollBarDirection.SB_VERT, ref si, true);
ただし、機能しません。単語に関連付けられたスパイで見つけることができるすべてのウィンドウハンドルを試しましたが、どれも動揺しませんでした。
SendInput を AutoScroll と組み合わせて使用しようとしましたが、それもうまくいきません (マウスのクリックと動きを立て続けに行っているためだと思われますが、それらを遅らせたくありません。単語を入力などに使用する人々の邪魔になるだけでなく、そのように行うのは間違っていると感じます. 注私はマウスの中ボタンでシングルクリックとダブルクリックの両方の組み合わせを試しました) これがそのコードです:
INPUT mouseMoveInput = new INPUT();
mouseMoveInput.type = SendInputEventType.InputMouse;
mouseMoveInput.mkhi.mi.dx = left;
mouseMoveInput.mkhi.mi.dy = top;
mouseMoveInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_ABSOLUTE | MouseEventFlags.MOUSEEVENTF_MOVE;
SendInput(1, ref mouseMoveInput, Marshal.SizeOf(new INPUT()));
INPUT mouseDownInput = new INPUT();
mouseDownInput.type = SendInputEventType.InputMouse;
mouseDownInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_MIDDLEDOWN;
SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT()));
INPUT mouseUpInput = new INPUT();
mouseUpInput.type = SendInputEventType.InputMouse;
mouseUpInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_MIDDLEUP;
SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT()));
SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT()));
SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT()));
mouseMoveInput.mkhi.mi.dx = 0;
mouseMoveInput.mkhi.mi.dy = 150;
mouseMoveInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_MOVE;
SendInput(1, ref mouseMoveInput, Marshal.SizeOf(new INPUT()));
SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT()));
SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT()));
word application com オブジェクトに付属する smallscroll と autoscroll は、行全体のジャンプであるか、マウスを動かしたときにドキュメントがどこにでもスイングする状態のままになります。
よりスムーズに見えるので、一度に 1 ピクセルずつスクロールしたいが、ユーザーに干渉することなくプログラムで制御したい