【发布时间】:2012-03-17 16:37:43
【问题描述】:
我想使用窗口的HWND(句柄)检查外部应用程序的窗口是否有垂直或水平滚动条可见,是否存在任何WinApi函数来获取此信息?我真的尝试了GetScrollInfo 函数,但似乎没有检索有关滚动条可见性的信息。
【问题讨论】:
我想使用窗口的HWND(句柄)检查外部应用程序的窗口是否有垂直或水平滚动条可见,是否存在任何WinApi函数来获取此信息?我真的尝试了GetScrollInfo 函数,但似乎没有检索有关滚动条可见性的信息。
【问题讨论】:
GetScrollBarInfo 和 OBJID_HSCROLL 或 OBJID_VSCROLL 怎么样
如果idObject为OBJID_CLIENT且hwnd指定的窗口不是系统滚动条控件,则系统向窗口发送SBM_GETSCROLLBARINFO消息获取滚动条信息。这允许 GetScrollBarInfo 对模拟滚动条的自定义控件进行操作。如果窗口不处理 SBM_GETSCROLLBARINFO 消息,GetScrollBarInfo 函数将失败。
您可以在SCROLLBARINFO 结构中测试rgstate,那里有一个STATE_SYSTEM_INVISIBLE 标志。
另一种可能的方法是测试GetWindowLong(hWnd, GWL_STYLE) and (WS_HSCROLL or WS_VSCROLL) <> 0
【讨论】:
Explorer.exe 包含控件SysTreeView32 和SysListView32(都返回有效的WS_HSCROLL 或WS_VSCROLL)和GetWindowLong。我使用 Spy++ 来确认窗口样式。虽然没有使用GetScrollBarInfo 进行测试。