Chapter.WinAPI
1.0.1
dotnet add package Chapter.WinAPI --version 1.0.1
NuGet\Install-Package Chapter.WinAPI -Version 1.0.1
<PackageReference Include="Chapter.WinAPI" Version="1.0.1" />
paket add Chapter.WinAPI --version 1.0.1
#r "nuget: Chapter.WinAPI, 1.0.1"
// Install Chapter.WinAPI as a Cake Addin #addin nuget:?package=Chapter.WinAPI&version=1.0.1 // Install Chapter.WinAPI as a Cake Tool #tool nuget:?package=Chapter.WinAPI&version=1.0.1
Chapter.WinAPI Library
Overview
During development of the Chapter libraries, it happens easily from time to time that native WinAPI calls must be made. Thats the reason why this Chapter.WinAPI library is born. Note: The Chapter.WinAPI is far from complete, it contains only methods needed for any other Chapter library and it will continue grow that way only. But of course, it it contains anything you may need in your application. Feel free to use it.
Features
- Dwmapi: Access to the WinAPI methods within the "dwmapi.dll"
- Kernel32: Access to WinAPI methods within the "kernel32.dll".
- Shell32: Access to WinAPI methods within the "shell32.dll".
- User32: Access to WinAPI methods within the "user32.dll".
- Data: Values and structures to use within any of those above. Like WM (WindowMessages), WH (WindowHandle) and many more.
Getting Started
Installation:
- Install the Chapter.WinAPI library via NuGet Package Manager:
dotnet add package Chapter.WinAPI
Usage:
- Direct access the objects like
User32.ShowWindow(windowHandle, WindowShowStyle.Restore);
- Or a wrapper
public class Demo { public Demo(IUser32 user32) { _user32 = user32; } public void RestoreWindow(Window window) { var windowHandle = ((HwndSource)PresentationSource.FromVisual(window))!.Handle; _user32.ShowWindow(windowHandle, WindowShowStyle.Restore); } }
Example
- Target
public class Demo { public Demo(IUser32 user32) { _user32 = user32; } public void RestoreWindow(Window window) { var windowHandle = ((HwndSource)PresentationSource.FromVisual(window))!.Handle; _user32.ShowWindow(windowHandle, WindowShowStyle.Restore); } }
- UnitTest
public class DemoTests { private Demo _target, [Setup] public void Setup() { _user32 = new Mock<IUser32>(); _target = new Demo(_user32.Object); } [Test] public void RestoreWindow_CalledAfterMinimizedFromNormal_RestoresTheWindowBackToNormal() { var window = Utils.OpenDummyWindow(); window.WindowState = WindowState.Normal; window.WindowState = WindowState.Minimized; _target.RestoreWindow(window); _user32.Verify(x => x.ShowWindow(It.IsAny<nint>(), WindowShowStyle.Restore), Times.Once()); Assert.That(window.WindowState, Is.EqualTo(WindowState.Normal)); } [Test] public void RestoreWindow_CalledAfterMinimizedFromNormal_RestoresTheWindowBackToMaximized() { var window = Utils.OpenDummyWindow(); window.WindowState = WindowState.Maximized; window.WindowState = WindowState.Minimized; _target.RestoreWindow(window); _user32.Verify(x => x.ShowWindow(It.IsAny<nint>(), WindowShowStyle.Restore), Times.Once()); Assert.That(window.WindowState, Is.EqualTo(WindowState.Maximized)); } }
Links
License
Copyright (c) David Wendland. All rights reserved. Licensed under the MIT License. See LICENSE file in the project root for full license information.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|