Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet visar hur du i en skrivbordsapp hämtar fönsterhandtaget för ett fönster. Omfånget omfattar WinUI 3-, Windows Presentation Foundation-appar (WPF) och WinForms-appar (Windows Forms). kodexempel visas i C# och C++/WinRT.
Ramverken för utveckling och användargränssnitt som anges ovan bygger (i bakgrunden) på Win32-API:et. I Win32 identifieras ett -fönster-objekt med ett värde som kallas ett -fönsterhandtag. Och typen av ett fönsterhandtag är en HWND- (även om den visas i C# som en IntPtr). I vilket fall som helst kommer du att höra termen HWND användas som en förkortning för fönsterhandtag.
Det finns flera orsaker till att hämta HWND för ett fönster i din WinUI 3-, WPF- eller WinForms-skrivbordsapp. Ett exempel är att använda HWND för att samverka med vissa WinRT-objekt (Windows Runtime) som är beroende av en CoreWindow för att visa ett användargränssnitt (UI). Mer information finns i Visa WinRT-gränssnittsobjekt som är beroende av CoreWindow.
WinUI 3 med C#
C#-koden nedan visar hur du hämtar fönsterhandtaget (HWND) för ett WinUI 3-fönsterobjekt . I det här exemplet anropas metoden GetWindowHandle i interop-klassen WinRT.Interop.WindowNative C#. Mer information om C#-interopklasserna finns i Anropa interop-API:er från en .NET-app.
// 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 med C++
C++/WinRT-koden nedan visar hur du hämtar fönsterhandtaget (HWND) för ett WinUI 3-fönsterobjekt . I det här exemplet anropas metoden IWindowNative::get_WindowHandle .
// 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 med C#
C#-koden nedan visar hur du hämtar fönsterhandtaget (HWND) för ett WPF-fönsterobjekt. I det här exemplet används klassen WindowInteropHelper .
// MainWindow.xaml.cs
private void Button_Click(object sender, RoutedEventArgs e)
{
var wih = new System.Windows.Interop.WindowInteropHelper(this);
var hWnd = wih.Handle;
}
WinForms med C#
C#-koden nedan visar hur du hämtar fönsterhandtaget (HWND) för ett WinForms-formulärobjekt. I det här exemplet används egenskapen NativeWindow.Handle .
// Form1.cs
private void button1_Click(object sender, EventArgs e)
{
var hWnd = this.Handle;
}
Fastställa vilket fönster som är värd för ett visuellt element
Från ett visuellt element kan du komma åt UIElement.XamlRoot. sedan XamlRoot.ContentIslandEnvironment; sedan innehåller egenskapen ContentIslandEnvironment.AppWindowId ID:t för Win32 HWND på den översta nivån.
Relaterade ämnen
Windows developer