另一个关于 Win32 Vs UI 自动化的文章
Posted
技术标签:
【中文标题】另一个关于 Win32 Vs UI 自动化的文章【英文标题】:Another one about Win32 Vs UI Automation 【发布时间】:2011-10-09 22:53:58 【问题描述】:我正在构建一个(我还没有决定的 Web/WinForms 应用程序)并且我有一个正在运行的简单 WinForms 应用程序,我无法通过我的新应用程序访问它,我只想读取一些值和也许编辑一些值(标签、按钮、一些琐碎的东西)。所以我按照this question 中的建议使用了 Spy++。
因此,我能够通过这个出色的工具查看需要读取/编辑的值。并且我能够编辑一些值(如隐藏、取消选中、禁用某些标签和按钮上的等)并且它们反映在应用程序上。
所以我想进入下一步,我被告知我有两个选择。无论是 Win32 还是 UI 自动化。我对他们俩都一无所知,所以一点指导会很棒。
关于这个问题,我还有 3 个问题:
哪种方法更适合用于 WinForms,为什么?
这两个选项中的任何一个都可以通过 WebApplication 使用,还是两个选项都需要在 WinForms 应用程序中实现?
这些选项在编辑值时是否有限制?
【问题讨论】:
【参考方案1】:(如果你还在搜索..)
这取决于你更熟悉什么。另外,一般来说,我认为 UI 自动化稍微容易一些,因为对于 Wind32SDK,您需要使用大量的 pinvoke 和类似的东西,这对于纯 .net 的人来说可能不容易。
对于 Win32,http://www.pinvoke.net/default.aspx/ 确实是最好的起点,它为您提供所有签名和一些示例代码。
对于 UI 自动化,还有很多地方可以从大量示例开始。其中之一是http://blogs.msdn.com/b/winuiautomation/。
另请注意,它们在功能和可用性方面没有可比性。如前所述,UI 自动化更自然,Win32 还允许您访问许多您无法通过自动化实现的值。我认为 UI 自动化主要是只读的。
在外部应用程序中启用/禁用按钮很有趣。当发现它经常起作用时,我想在一些受保护的商业产品上使用它(只是禁用“专业”按钮“)只是为了检查是否有额外的保护。:) 意思是如果你想要要在您的应用中拥有这样的功能,请知道用户始终可以使隐藏的元素可见或启用禁用的元素。
【讨论】:
以上是关于另一个关于 Win32 Vs UI 自动化的文章的主要内容,如果未能解决你的问题,请参考以下文章
如何自动化 UI 键盘输入? pywin32 PostMessage vs Powershell SendKeys
我安装的VS2008怎么win32控制台应用程序生成时窗口总是自动运行一遍就自动关闭
Python win32ui.error:CreateCompatibleDC 失败