私は次のコードを使用しています:
protected override void OnSourceInitialized(EventArgs e)
{
...
....
HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
...
...
}
一部のシステムでは、「ソース」値がnullになり、その理由がわかりません...
私は次のコードを使用しています:
protected override void OnSourceInitialized(EventArgs e)
{
...
....
HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
...
...
}
一部のシステムでは、「ソース」値がnullになり、その理由がわかりません...
.Net 4.0 以降では、HwndSource
最初にウィンドウを表示しなくてもアクセスできます。
var helper = new WindowInteropHelper(this);
var hwndSource = HwndSource.FromHwnd(helper.EnsureHandle());
WumpasTamer の答えは正しいです。「ターンキー」ソリューションを探している他の人のために、簡単なコード サンプルを追加したいと思います。すでに WPF を使用している場合window
は必要ありませんが、Winforms を使用していて使用したい場合は、PresentationSource
これを使用する必要があります。
void Main()
{
var window = new Window
{
Width = 0,
Height = 0,
WindowStyle = WindowStyle.None,
ShowInTaskbar = false,
ShowActivated = false
};
window.Loaded += a_Loaded;
window.Show();
}
void a_Loaded(object sender, EventArgs e)
{
var s = (Window) sender;
var source = PresentationSource.FromVisual(s);
//...
s.Close();
}