【问题标题】:C# Getting the window with focus?C# 获得焦点的窗口?
【发布时间】:2011-09-04 11:04:54
【问题描述】:

我正在制作一个 C# WPF 应用程序,每次用户点击我的应用程序之外的某个位置时,我想显示一个带有点击窗口标题的警报。为了检测我的应用程序之外的点击,我使用LowLevelMouseProc。但是如何在 C# 中获得具有焦点的窗口?

提前致谢!

编辑: 我知道这与我最初的问题无关,但我如何才能让控制集中起来呢?

【问题讨论】:

  • 第二个问题:你可能需要一个函数GetFocus() - 阅读那个MSDN页面上的备注
  • 您确定只想检测用户何时在您的应用外点击?用户也可以使用键盘切换窗口。您可以尝试查看 WM_ACTIVATE 消息:stackoverflow.com/questions/813356/…(Winforms,但是当您从 WPF 窗口获取 HWND 时,同样的基本思想也适用于 WPF)

标签: c# wpf focus window mouse


【解决方案1】:

关于如何获得焦点控件的后续问题,您可以使用GetGUIThreadInfo获取焦点控件的HWND。请注意,您传递的是拥有外部窗口的线程,而不是外部窗口本身(函数文档告诉您如何从外部窗口句柄中获取线程 ID)。聚焦的 HWND 通过GUITHREADINFO.hwndFocus 成员返回。

请注意,通常情况下,您不能比 HWND 做得更好,因为前台窗口不一定是 .NET 应用程序。例如,如果外部窗口是 WPF 窗口,这将不会告诉您该窗口中的哪个 WPF 控件具有焦点,因为 WPF 控件没有 HWND。

【讨论】:

    【解决方案2】:

    GetForegroundWindow 应该这样做。

    【讨论】:

    • 谢谢你,这行得通!我知道这与我最初的问题无关,但我如何才能让控制集中起来呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2021-07-17
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多