NOTE
Most methods accept both window and hwnd
TrackWindow
you can track/Save all your windows in a dictionary which can be used in ThemeService, or other stuff.
cs
WindowHelper.TrackWindow(window);RemoveWindowFromTrack
remove window from TrackWindow list.
cs
WindowHelper.RemoveWindowFromTrack(window);GetWindowForElement
return window from a UIElement:
cs
Window window = WindowHelper.GetWindowForElement(element);SwitchToThisWindow
cs
WindowHelper.SwitchToThisWindow(window);
or
WindowHelper.SwitchToThisWindow(hwnd);ReActivateWindow
cs
WindowHelper.ReActivateWindow(window);
or
WindowHelper.ReActivateWindow(hwnd);CreateWindowWithFrame
cs
var windowWithFrame = WindowHelper.CreateWindowWithFrame();
//windowWithFrame.rootFrame
//windowWithFrame.windowSetWindowCornerRadius
cs
WindowHelper.SetWindowCornerRadius(window, NativeValues.DWM_WINDOW_CORNER_PREFERENCE.DWMWCP_ROUND);
or
WindowHelper.SetWindowCornerRadius(hwnd, NativeValues.DWM_WINDOW_CORNER_PREFERENCE.DWMWCP_ROUND);GetWindowCornerRadius
cs
NativeValues.DWM_WINDOW_CORNER_PREFERENCE corner = WindowHelper.GetWindowCornerRadius(window);GetTopLevelWindows
cs
var topWindows = WindowHelper.GetTopLevelWindows();GetProcessWindowList
cs
var processWindowList = WindowHelper.GetProcessWindowList();GetWindowText
cs
var windowText = WindowHelper.GetWindowText(hwnd);GetClassName
cs
var windowClassName = WindowHelper.GetClassName(hwnd);GetCurrentAppWindow
cs
var appWindow = WindowHelper.GetCurrentAppWindow();GetAppWindow / GetAppWindow2
cs
// Use XamlRoot
var appWindow = WindowHelper.GetAppWindow(element);
or
// Use CompositionTarget and ContentIsland
var appWindow = WindowHelper.GetAppWindow2(element);GetWindowHandle / GetWindowHandle2
cs
// Use XamlRoot
var hwnd = WindowHelper.GetWindowHandle(element);
// or
// Use CompositionTarget and ContentIsland
var hwnd = WindowHelper.GetWindowHandle2(element);GetAllWindowHandles
cs
// Use CompositionTarget and ContentIsland
var hwnds = WindowHelper.GetAllWindowHandles();GetAllWindowIds
cs
// Use CompositionTarget and ContentIsland
var ids = WindowHelper.GetAllWindowIds();GetAllAppWindows
cs
// Use CompositionTarget and ContentIsland
var windowIds = WindowHelper.GetAllAppWindows();RemoveWindowBorderAndTitleBar
cs
WindowHelper.RemoveWindowBorderAndTitleBar(window);
// or
WindowHelper.RemoveWindowBorderAndTitleBar(hwnd);MakeTransparentWindowClickThrough
cs
WindowHelper.MakeTransparentWindowClickThrough(window);
// or
WindowHelper.MakeTransparentWindowClickThrough(hwnd);ResizeAndCenterWindowToPercentageOfWorkArea
GetScreenSize
SetWindowOwner
cs
WindowHelper.SetWindowOwner(parentHwnd, childHwnd);FindWindow
cs
var hwnd = WindowHelper.FindWindow(hwnd, "InputNonClientPointerSource");SetForegroundWindow
cs
WindowHelper.SetForegroundWindow(hwnd);CenterOnScreen
cs
var IsCentered = WindowHelper.CenterOnScreen(hwnd);TryGetAllWindowIds
cs
var windowIds = WindowHelper.TryGetAllWindowIds();HideWindow
cs
WindowHelper.HideWindow(hwnd);
// Or
//WindowHelper.HideWindow(window);ShowWindow
cs
WindowHelper.ShowWindow(hwnd);
// Or
//WindowHelper.ShowWindow(window);GetDpiForWindow
cs
var dpi = WindowHelper.GetDpiForWindow(hwnd);
// Or
//var dpi = WindowHelper.GetDpiForWindow(window);GetWindowIcon
cs
var iconId = WindowHelper.GetWindowIcon(hwnd);
// Or
//var iconId = WindowHelper.GetWindowIcon(window);SetRegion
Create transparent regions.
Create a 200x200 hole in the window, Starting at location 100,100.
cs
WindowHelper.SetRegion(window, ScreenRegion.Create(new Rect(0,0, window.Width, window.Height)) - ScreenRegion.Create(new Rect(100, 100, 200, 200)));SetWindowSize
cs
WindowHelper.SetWindowSize(window, width, height);ShakeWindowAsync
cs
await WindowHelper.ShakeWindowAsync(window);MoveWindowToBottomRight
CenterWindowOnDisplay
Demo
you can run demo and see this feature.