【问题标题】:WinAPI, get selected/active window on mouse left down?WinAPI,在鼠标左下角获得选定/活动窗口?
【发布时间】:2016-09-06 20:58:44
【问题描述】:

情况:我正在尝试在 Windows 函数中使用 GetForeground() 来获取当前的前台窗口。

问题:但是,在发送 LEFT MOUSE UP 之前,操作系统上的前景窗口不会更新,但我需要在 LEFT MOUSE DOWN 上获取它。我会假设它是新的前景窗口,因为当我按下鼠标时它被选中并且我可以移动窗口但事实并非如此。我似乎无法在 Windows 函数中找到任何其他可用于获取当前活动窗口的方法。我试过 GetActiveWindow() 但句柄总是 0。

【问题讨论】:

  • 您真正想解决什么问题?也许调用GetForegroundWindow 是完全错误的解决方案。
  • 我想获得我正在使用的窗口的句柄。例如,我将鼠标左键放在 Windows 上的文件资源管理器(标题栏)上,该窗口现在已被选中,我可以移动它。但是我无法获得它的句柄 ID。我会假设当我鼠标左键窗口将它设置为新的前景窗口,所以通过调用 GetForeground() 我会得到句柄。但我没有。
  • 您只是重复了您的问题,但没有回答您最终要完成的工作。为什么你认为你需要知道鼠标左键按下事件的前景窗口?你打算如何处理这些信息?
  • 哦,对不起,我以为我在第一篇文章中并不清楚。基本上我想获得有关其位置的信息。我可以通过使用 GetWindowRect,我只是错过了 hWnd
  • @MichaelChiLam 根据您对我的回答的回复,您似乎想要做的(这是 IInspectable 所要求的)是从屏幕坐标中检索窗口。请注意,它与活动/前景窗口没有直接关系。见What is the XY problem?

标签: c# winapi pinvoke


【解决方案1】:

如果您想从鼠标坐标中检索 HWND,您应该查看 WindowFromPoint

(或许也可以看到: What's the difference between WindowFromPhysicalPoint and WindowFromPoint?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多