【发布时间】:2019-06-13 06:57:31
【问题描述】:
我想捕获在 Windows 窗体应用程序上单击的按钮的单击事件,可以在 Application A 中说,我想在 Application B 中捕获它也是一个 Windows 窗体应用程序。
我已经创建了两个应用程序并在应用程序 A 中添加了按钮。现在,当在应用程序 A 中单击按钮时,我想在应用程序 B 中捕获事件。
请指导。
【问题讨论】:
我想捕获在 Windows 窗体应用程序上单击的按钮的单击事件,可以在 Application A 中说,我想在 Application B 中捕获它也是一个 Windows 窗体应用程序。
我已经创建了两个应用程序并在应用程序 A 中添加了按钮。现在,当在应用程序 A 中单击按钮时,我想在应用程序 B 中捕获事件。
请指导。
【问题讨论】:
没有一种“快速”的方式可以在不同进程之间共享 .NET 事件。 您需要在引发它的同一应用程序中捕获事件,在应用程序 A 和应用程序 B 之间实现进程间通信机制(WCF、套接字……),并使用它将事件数据从 A 发送到 B。
有关更多详细信息,请参阅此问题和相关答案:Listen for events in another application
【讨论】:
我可以解释一下,否则你如何捕捉到 Button Click 事件。
您可以在您的第一个表单或可访问的类中创建您的第二个表单的实例,然后在您的第二个表单或您的类中调用一个公共方法,这就是您想要的。
示例表格 1:
var _secondForm = new Form2();
private void Form1_Load(object sender, EventArgs e)
{
_secondForm.Open();
}
private void button1_Click(object sender, EventArgs e)
{
MethodInSecondForm()
}
和你的第二种形式:
public void MethodInSecondForm()
{
// Event here
}
您也可以在 Class 中创建此实例并使其更容易。
【讨论】:
您可以使用 SetWinEventHook 或 WH_MOUSE_LL 挂钩 (P/调用)
(在 Windows 10 和 VS 2015 上测试)
(也是IUIAutomationEventHandler,但更复杂)
【讨论】: