我通过PInvoking RegisterHotKey()创建一个全局热键来显示一个窗口。但是要做到这一点,我需要该窗口的HWND,直到窗口加载后才存在,这意味着第一次显示。但是我不想在设置热键之前显示窗口。有没有办法为用户不可见的窗口创建HWND

最佳答案

如果您以.NET 4.0为目标,则可以使用EnsureHandle上可用的新WindowInteropHelper方法:

public void InitHwnd()
{
    var helper = new WindowInteropHelper(this);
    helper.EnsureHandle();
}

(感谢Thomas Levesque的pointing this out.)

如果您以.NET Framework的较旧版本为目标,则最简单的方法是在设置一些属性以确保该窗口不可见且不会窃取焦点的同时,显示要进入HWND的窗口:
var window = new Window() //make sure the window is invisible
{
    Width = 0,
    Height = 0,
    WindowStyle = WindowStyle.None,
    ShowInTaskbar = false,
    ShowActivated = false
};
window.Show();

一旦想要显示实际的窗口,就可以设置内容,大小并将样式更改回普通窗口。

关于wpf - 加载WPF窗口而不显示它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1399037/

10-12 17:45
查看更多