【问题标题】:Get mouse coords relative to other window获取相对于其他窗口的鼠标坐标
【发布时间】:2012-11-07 16:55:49
【问题描述】:

我想获得相对于另一个窗口(窗口客户区)的鼠标坐标,该窗口不是我的应用程序的一部分。

我宁愿这样做而不深入研究 Win32 API 和 dll 导入,但我不确定是否可行。

基本思想是:我的 C# WPF 应用程序将获得用户焦点,当用户按下热键 (CTRL + C) 时,应用程序将获得相对于先前指定窗口的客户区的坐标。这只是我需要为内部开发协助制作的快速应用程序。

【问题讨论】:

  • 如果它在你自己的窗口中,你如何在客户端相对坐标和屏幕绝对坐标之间切换?如果您在托管模式下执行此操作,是否有任何方法可以接受要考虑的基本窗口的窗口句柄?如果不是,那么您可能应该使用 win 32 API,这没有什么不好的:)
  • 您只需要对 Win32 DLL 进行两次调用,这不会太糟糕(并且是我知道的唯一解决方案)。这里有一个好的开始:stackoverflow.com/questions/1364440/… 试一试,如果遇到任何问题,请更新您的帖子。唯一的缺点是您最终会得到一个仅限 Windows 的解决方案,但这可能满足您的需求。
  • @jheddings:谢谢,我会试一试。

标签: c#


【解决方案1】:

如果你有进程名/ID,你可以通过调用System.Diagnostics.Process.MainWindowHandle来获取句柄。当你有句柄时,使用System.Windows.Forms.Control.FromHandle(handle).PointToClient(p)获取屏幕点p相对于另一个窗口位置的坐标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多