我搜索了我可能找到的所有信息,并查看了我发现的几个例子,我认为我做的每件事都是正确的,但结果令人失望。 我是完成目标的最后一站。基本上,我现在需要做的就是找到滚动条到达顶部或停止的时候。
首先,我确保我正在处理正确的窗口。 找到窗口后,我会尝试获取信息。
// get scrollbar info
SCROLLINFO scrollinfo = new SCROLLINFO();
scrollinfo.cbSize = (uint)Marshal.SizeOf(scrollinfo);
scrollinfo.fMask = SIF_ALL; // Get all the scroll bar information.
bool horBar = GetScrollInfo1(windowHandle, SB_HORZ, out scrollinfo);
Console.WriteLine(horBar);
bool vertBar = GetScrollInfo1(windowHandle, SB_VERT, out scrollinfo);
Console.WriteLine(vertBar);
Console.WriteLine(scrollinfo.nPage + ", " + scrollinfo.nPos);
两者都返回False和0。
// Get current scroller position
Orientation scriptWinSBar = Orientation.Vertical;
GetScrollPos(windowHandle, scriptWinSBar);
这是我唯一一个非零的地方。这将返回1,这是正确的,因为窗口不包含水平条(返回零)。
if ((int)scriptWinSBar > 0)
{
scrollinfo.fMask = SIF_POS;
GetScrollInfo1(windowHandle, SB_VERT, out scrollinfo);
Console.WriteLine("pos; " + scrollinfo.nPos.ToString());
scrollinfo.fMask = SIF_RANGE;
GetScrollInfo1(windowHandle, SB_VERT, out scrollinfo);
Console.WriteLine("min,max; " + scrollinfo.nMin.ToString() + ", " + scrollinfo.nMax.ToString());
}
Console.WriteLine(" scriptWinSBar : " + (int)scriptWinSBar);
这里所有的结果都是零, POS机; 0 最小值,最大值; 0,0 scriptWinSBar:1
...虽然滚动条位于底部或附近。 我不确定我做错了,还是我做的事情不对。 有人可以帮我解决这个问题。或者可能提供一个示例,说明如何获取滚动条的位置,或者知道它是滚动还是已停止滚动?感谢。