修改所有者绘制的控件

本文关键字:控件 绘制 所有者 修改 | 更新日期: 2023-09-27 18:01:00

我有一个第三方应用程序,正在为其编写外接程序,如果可能的话,我需要能够修改特定的对话框。该对话框有许多控件和组。。似乎是所有者绘制的,因此不会将窗口句柄暴露给spy++和其他工具。我欢迎任何关于如何禁用此对话框上的控件的见解。

由于我在进程中跑步,我可以走弯路(https://www.microsoft.com/en-us/research/project/detours/)截取函数,并使用enumwindows/enumchildwindows等调用来查找控件的句柄,然后我可以使用NativeWindow(C#(等技术来覆盖wndpoc消息并进行操作。我还熟悉setwindowshookex和挂钩消息队列。

只是在寻找一些使用所有者绘制控件的想法和模式。谢谢

[Edit1]我还熟悉UI Automation(C#/C++(和IAccessible框架。这将允许我进行一些控制(潜在的(,比如检测鼠标点击等,但我希望有更优雅的东西。例如:对于一个普通的组合框,如果我有一个句柄,我可以使用sendmessage((向它发送CB_*消息来操纵它的内容。如果你拿不到手柄,你怎么用combobox做到这一点。。。考虑到它是所有者绘制的(大概(,并且是另一个所有者绘制的父对象的一部分。

修改所有者绘制的控件

因此,不要将窗口句柄暴露给像spy++和其他这样的工具

就操作系统而言,它们不是真正的控件,因此您无法直接访问/操作它们。应用程序必须为他们公开API或UI自动化接口。据推测,该应用程序不会提供比它真正想要的插件更多的访问权限。

您应该联系应用程序作者以获得实现目标的帮助。