Skip to content

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.window

SetWindowCornerRadius ​

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.

Released under the MIT License.