【发布时间】:2011-06-15 15:05:51
【问题描述】:
我想获得一些控件的窗口句柄来做一些事情(需要一个句柄)。控件位于不同的应用程序中。
很奇怪;我发现许多控件没有 Windows 句柄,例如 Windows 资源管理器中工具栏 (?) 中的按钮。只需尝试获取文件夹/搜索/(等)按钮的句柄。它只给我 0。
所以.. 第一个问题:为什么有些控件没有窗口句柄?不是所有的控制窗口,在他们的心中? (只是谈论标准控件,就像我在 Windows 资源管理器中所期望的那样,没有在窗格等上自定义绘制。)
这让我想到了我的第二个问题:如果您无法获得它们的句柄,如何使用它们(例如使用 EnableWindow)?
非常感谢您的任何意见!
编辑(附加信息):
Windows 资源管理器只是一个示例。我经常遇到这个问题 - 而且是在不同的应用程序中(我真正感兴趣的应用程序,专有应用程序)。我有“物理”控件(因为我可以获得这些控件的 AutomationElement),但它们没有窗口句柄。此外,我正在尝试发送一条消息(SendMessage)来获取按钮状态,试图找出它是否被按下(它是一个标准按钮,似乎只通过该消息表现出这种行为 - 至少就我已经看到了。此外,尽管 Windows 资源管理器按钮显示类似的行为,就像按钮样式的复选框,但该按钮上的推送状态可能比标准按钮上的预期持续时间更长,尽管它们是(推送)按钮)。 SendMessage 需要一个窗口句柄。
ToolBar 是否会以某种方式改变其子元素的行为?拿走他们的窗户把手或类似的东西? (使用父句柄/控件ID进行识别??)但是如何在那些需要窗口句柄的控件上使用函数呢?
【问题讨论】:
标签: windows winapi button controls handle