【问题标题】:Manipulating scrollbars in third-party application在第三方应用程序中操作滚动条
【发布时间】:2010-01-23 18:21:32
【问题描述】:

我需要创建一个执行以下操作的应用程序:

一开始我们打开了记事本窗口,里面有很多文字。

我们的应用程序必须滚动浏览此文件并在每次滚动操作后截取记事本窗口。

我尝试使用 SBM_GETRANGE、SBM_GETRANGE、SBM_SETPOS 来实现这一点,但它对我不起作用。

请注意,模拟键盘事件(例如 PageDown、PageUp)对我来说不是一个选项,因为此应用程序还应该与其他可能不支持用于操作滚动的键盘快捷键的应用程序一起使用。

谢谢。

【问题讨论】:

  • 您的“其他应用程序”是否包括自己绘制滚动条的应用程序,例如 IE、Windows Live Messenger 或 WPF/DirectX 应用程序?
  • 我不知道,但如果您可以使用笔记本电脑,您可能会看到 Synaptics 触摸板驱动程序在您沿触摸板边缘拖动时发送的消息(或类似的中间-单击滚动查看 Thinkpad 上的跟踪点)。或者看看 SnagIt!这已经可以满足您的需求了。

标签: c++ winapi visual-c++


【解决方案1】:

不要尝试直接操作滚动条 - 而是将 SetFocus() 发送到文本窗口,然后发送 Page Down 消息。如果您在某些应用程序中必须操作滚动条,则应获取其窗口句柄并在那里发送消息。

【讨论】:

  • 正如我已经说过的 - 模拟键盘事件不是一种选择。或者您的意思是其他一些“Page Down 消息”?我已经拥有与编辑控件句柄相同的记事本窗口句柄,但仍然无法通过向滚动条发送消息来操作滚动条。
  • 1.我应该记得:记事本不是“普通”的 Windows 应用程序。例如,“滚动条”不是普通的滚动条(它不会出现在 Spy++ 中)。
  • 2.正如我所说,如果目标应用程序只接受滚动条本身的输入,则将击键消息发送到滚动条。
  • 在我已经分析过的所有应用程序中,滚动条不是一个单独的控件(如果你是这个意思)。
猜你喜欢
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多