1

我已经尝试了几件事。

首先:

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);

但是它不起作用,我已经尝试了所有可以找到的与 Spy 关联的窗口句柄,但它们都没有让步。

我已经尝试将 SendInput 与 AutoScroll 结合使用,但它也没有这样做(我怀疑这是因为我正在快速连续地进行鼠标点击和移动 - 但我不想因为它而延迟它们会干扰人们使用word来输入/等,而且这样做感觉不对。注意我已经尝试了鼠标中键的单击和双击组合)这是代码:

            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 要么是整行跳转,要么是让鼠标处于任何移动都将文档摆动到各处的状态。

我希望一次滚动单个像素,因为它看起来更平滑,但希望以编程方式控制它而不干扰用户

4

0 回答 0