【问题标题】:C# forward mouse events to another window without losing focusC# 将鼠标事件转发到另一个窗口而不失去焦点
【发布时间】:2021-03-28 16:15:50
【问题描述】:

我的应用截屏了另一个在第二台显示器上运行的窗口。现在,我还想将在我的应用程序中进行的鼠标点击转发到该窗口。为此,我尝试在 user32.dll 中使用SendMessage,但这也会导致窗口焦点切换,这会导致一些问题,例如两个窗口快速争夺焦点。有没有办法在不激活隐藏窗口并失去对主应用程序的关注的情况下放置这些鼠标事件?

【问题讨论】:

  • 这不是我需要集成到第二个程序中的东西吗?不幸的是,我没有源代码,而且它可能甚至不是用 C# 编写的。
  • 不,您使用应用程序中的 UI 自动化来自动化另一个正在运行的应用程序。其中包括激活默认操作(单击按钮、打开菜单和激活菜单项、更改文本等)。 UI 自动化不需要 受控 应用处于活动状态,或者在同一个屏幕中,甚至是可见的(并不意味着禁用)。

标签: c# windows mouseevent


【解决方案1】:

有没有办法在不激活隐藏窗口和失去对主应用程序焦点的情况下放置这些鼠标事件?

不,甚至没有办法将鼠标输入转发到另一个接收器。消息只是输入处理的一部分。该系统还进行内部簿记,您无法复制。

注入输入的唯一可靠方法是调用SendInput。这样做不允许您指定接收者。输入转到系统确定为接收者的任何线程。

虽然,当需要解决的问题完全不同时,通常会问这个问题:如何自动化 UI?该问题的答案是UI Automation。

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2012-07-29
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多