我有外部应用程序窗口的HWND。 从我的应用程序我需要发送消息(或发布)到 滚动窗口在100px向下,我的意思是滚动偏移必须是100px。
怎么办呢? 我尝试用SB_LINEDOWN发送WN_VSCROLL,但是如何设置100px?多么糊涂 像素由SB_LINEDOWN向下滚动?
UPD2:
我试试
SCROLLINFO si;
ZeroMemory(&si, sizeof(si));
si.cbSize = sizeof(si);
si.fMask = SIF_ALL;
if (GetScrollInfo(h, SB_VERT, &si))
{
si.nPos += 123;
SetScrollInfo(h, SB_VERT, &si, TRUE);
SendMessage(h, WM_VSCROLL, MAKEWPARAM(SB_THUMBTRACK, si.nPos), 0);
}
else
{
printf("no GetScrollInfo! %d", ::GetLastError());
}
并收到printf“没有GetScrollInfo!1447”(1447是ERROR_NO_SCROLLBARS又名“窗口没有滚动条”),但“Internet Explorer_Server”有滚动条!
答案 0 :(得分:0)
WM_VSCROLL缺乏执行您想要的精确度。但是,您应该可以使用SetScrollPos()执行所需操作。您需要使用GetScrollInfo()并计算移动拇指的距离。
我认为使用上述方法使其准确无误仍然很棘手。你想要达到的目标是什么?可能有更好的方法来实现它,而不是模拟滚动。