【问题标题】:How to get a value of a RadioButton from a WinForm application that I don't have an API for?如何从我没有 API 的 WinForm 应用程序中获取 RadioButton 的值?
【发布时间】:2011-10-10 05:01:44
【问题描述】:

我有一个小型计算系统,将安装在多台 PC 上。这些 PC 中安装了一个程序,并且该程序始终处于打开状态(但已最小化)。

我需要在这个程序中获取“RadioButton”的值,但我无法访问它!

我试图为这个应用程序获取一个 API,但开发它的公司拒绝合作。我有一个疯狂的想法,你可以参考我关于这个想法的问题Click It,最后一件事是获取按钮的缓存,但我认为这仅适用于 WebApplications!

任何帮助都会很棒! =) .. 顺便说一句,我决定将我的应用程序构建为 Web 应用程序,但由于屏幕截图,我改变主意将其构建为 WinForms。但如果我有更好、更干净的解决方案,我会回到 WebApp

【问题讨论】:

    标签: c# asp.net winforms visual-studio-2010


    【解决方案1】:

    屏幕抓取不是一个好选择。如果应用程序使用窗口控件,您应该能够使用基于FindWindow 的方法来获取单选按钮。如果没有,那么 UI 自动化很可能能够获得单选按钮的值。无论通常可以使用这样的方法从另一个应用程序中读取 UI 状态,而且比屏幕抓取更容易。

    【讨论】:

    • 好吧,大卫,我想你是想给我一个好消息! =) .. 但是我对 UI、Windows API 和其他东西一无所知,所以让我进行研究,如果您对如何使用此方法查找特定程序/进程然后访问它的 RadioButton 有更多说明。我认为这是一个 WinForm 应用程序,虽然我不确定,但我们可以试错! =D 但现在一个示例代码或更多细节会很棒。无论如何,我会研究一下,如果你有什么要补充的,那就太好了!
    • 仅在 Stack Overflow 上就有大量的 FindWindow 自动化示例。您需要做的第一件事是使用 Spy++ 或类似工具来了解此应用程序是否使用单选按钮窗口。如果是这样,那么从那里回家很容易。
    • 注意:窗口标题会像这样“程序名-变量-变量”
    • FindWindow 和 EnumWindows 是原始的 win32 api。需要pinvoke他们。如果我是你,我会谷歌 UIautomation 并寻找相关教程。
    • 会做到的 (Y) 你提供的不仅仅是一个很大的帮助。大卫晚安。
    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多