Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto tématu se dozvíte, jak v desktopové aplikaci načíst popisovač okna okna. Obor zahrnuje aplikace WinUI 3, Windows Presentation Foundation (WPF) a Windows Forms (WinForms). Příklady kódu jsou uvedeny v jazyce C# a C++/WinRT.
Výše uvedené architektury pro vývoj a uživatelské rozhraní jsou (na pozadí) založené na rozhraní API Win32. V systému Win32 je objekt okna identifikován hodnotou známou jako popisovač okna. A typ úchytu okna je HWND (i když se v jazyce C# zobrazuje jako IntPtr). V každém případě uslyšíte termín HWND použitý jako zkratka pro úchyt okna.
Existuje několik důvodů, proč získat HWND pro okno v desktopové aplikaci WinUI 3, WPF nebo WinForms. Jedním z příkladů je použití HWND pro spolupráci s určitými objekty Windows Runtime (WinRT), které závisí na CoreWindow k zobrazení uživatelského rozhraní . Další informace naleznete v tématu Zobrazení objektů uživatelského rozhraní WinRT, které závisí na CoreWindow.
WinUI 3 s C#
Kód jazyka C# uvedený níže ukazuje, jak získat popisovač okna (HWND) pro objekt Window ve WinUI 3. Tento příklad volá metodu GetWindowHandle na interop třídu WinRT.Interop.WindowNative C#. Další informace o třídách interoperability jazyka C# najdete v tématu Volání rozhraní API pro interoperabilitu z aplikace .NET.
// MainWindow.xaml.cs
private async void myButton_Click(object sender, RoutedEventArgs e)
{
// Retrieve the window handle (HWND) of the current WinUI 3 window.
var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
}
WinUI 3 s C++
Níže uvedený kód C++/WinRT ukazuje, jak načíst popisovač okna (HWND) pro objekt Window ve WinUI 3. Tento příklad volá IWindowNative::get_WindowHandle metoda.
// pch.h
...
#include <microsoft.ui.xaml.window.h>
// MainWindow.xaml.cpp
void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&)
{
// Retrieve the window handle (HWND) of the current WinUI 3 window.
auto windowNative{ this->m_inner.as<::IWindowNative>() };
HWND hWnd{ 0 };
windowNative->get_WindowHandle(&hWnd);
}
WPF s C#
Níže uvedený kód jazyka C# ukazuje, jak získat popisovač okna (HWND) pro objekt okna WPF. Tento příklad používá WindowInteropHelper třída.
// MainWindow.xaml.cs
private void Button_Click(object sender, RoutedEventArgs e)
{
var wih = new System.Windows.Interop.WindowInteropHelper(this);
var hWnd = wih.Handle;
}
WinForms s jazykem C#
Níže uvedený kód jazyka C# ukazuje, jak získat popisovač okna (HWND) pro objekt formuláře WinForms. Tento příklad používá NativeWindow.Handle vlastnost.
// Form1.cs
private void button1_Click(object sender, EventArgs e)
{
var hWnd = this.Handle;
}
Určení okna, které je hostitelem vizuálního prvku
Z vizuálního prvku můžete získat přístup k UIElement.XamlRoot; pak XamlRoot.ContentIslandEnvironment; Vlastnost ContentIslandEnvironment.AppWindowId obsahuje ID systému Win32 HWND nejvyšší úrovně.
Související témata
Windows developer