【问题标题】:c# detect which messagebox (originated in another app) button has been pressedc#检测哪个消息框(源自另一个应用程序)按钮已被按下
【发布时间】:2014-02-23 11:50:50
【问题描述】:

另一个应用程序显示一个消息框(里面有一个独特的文本),用户选择是/否。 如何检测他在 c# 中按下的内容? (最好在 .Net 中达到 3.5)。我可以使用 FindWindowEx(在另一个线程上)进行轮询,但是如何检测按下了哪个按钮?另外,我不认为投票是完成这项工作的最佳方式。

我需要知道用户在另一个应用中选择了什么,以便我可以在自己的应用中做出相应的反应。我无权访问其他应用的源代码。另外为了清楚起见,我不想自己单击任何按钮。一点c++、winapi和pinvoke我都不怕

【问题讨论】:

  • 这听起来并不容易。当然不是来自 C#。它需要一些钩子。这种不寻常的要求背后的根本问题是什么?

标签: c# winapi hook


【解决方案1】:

要监视另一个应用程序中的 UI 事件,您可以使用 UI Automation。要解决您的特定问题,您需要订阅特定事件(请参阅Subscribing to UI Automation Events)。为此,请使用 UIA_Invoke_InvokedEventId Event Identifier 致电 IUIAutomation::AddAutomationEventHandler

虽然 UI 自动化可用于解决您的问题,但它是一种辅助技术,主要用于满足可访问性需求和自动化 UI 测试。

【讨论】:

    【解决方案2】:

    您可以使用匿名或命名管道或 WCF(Windows Communications Foundation)。

    【讨论】:

    • 我无权访问其他应用的源代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多