【问题标题】:Set Owner of wpf window by window of other application, is it possible?通过其他应用程序的窗口设置 wpf 窗口的所有者,可以吗?
【发布时间】:2013-02-22 03:59:50
【问题描述】:

我想通过 wpf 制作一个可以覆盖特定 Windows 应用程序的应用程序。 这意味着,当我运行我的应用程序并将记事本指定为目标应用程序时。那时,只要记事本应用程序获得焦点,我的应用程序就会接管焦点并阻止用户直接处理记事本。

在同一个应用程序中有两个窗口的情况下非常简单(我们可以设置子窗口的所有者和显示对话框)

所以,我想知道是否可以获取其他应用程序的窗口句柄来为我们的应用程序设置所有者。

感谢任何 cmets 或讨论!

【问题讨论】:

    标签: c# .net wpf mvvm


    【解决方案1】:

    在一般意义上,是的 - 这是可能的。但是您必须使用平台 API 来获取不在您的进程中的 Windows 句柄。

    这是Window-related Functions in the Win32 Platform API的列表

    然后,您可以使您的 WPF 窗口出现在另一个窗口的顶部。但要知道,根据您的最终目标,这可能不是实现您想要的结果的最佳方式!

    【讨论】:

    • 谢谢老哥,我现在可以拿到目标窗口的句柄了。我现在的工作是设置位置,我的 wpf 窗口的所有者通过该句柄与目标窗口重叠。我想。 ^_^。谢谢!
    • 很好,在 WindowInteropHelper 的支持下设置所有者后。覆盖形式可以很好地覆盖目标窗口,即使在 alt-tab 的情况下也是如此。但另一个问题是,用户移动或调整目标窗口的大小。哈哈。有什么推荐的吗?
    • @kidgu bit.ly/16WOzK6 有一个定位和调整大小的解决方案。
    • 你知道为什么这适用于 .NET 4 但不适用于 .NET 3.5?
    • 在这里找到一个与另一个窗口匹配的大小的好例子:bit.ly/16WOzK6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2011-02-05
    • 2018-07-17
    • 2014-10-12
    • 2015-06-15
    • 2010-11-06
    相关资源
    最近更新 更多