Skip to content
github-actions[bot] edited this page Mar 27, 2026 · 2 revisions

Dapplo.Windows

Dapplo.Windows is a comprehensive .NET library providing Windows-specific functionality for .NET Framework and .NET Core applications. Originally developed for Greenshot, it is now a standalone, modular library that makes interacting with Windows APIs easy from managed code.

Why Dapplo.Windows?

Working with native Windows APIs from .NET can be tedious: you have to write P/Invoke declarations, manage unmanaged resources safely, and deal with threading requirements. Dapplo.Windows handles all of that for you and adds reactive, observable APIs built on top of Reactive Extensions (Rx.NET).

Package Overview

The library is intentionally split into focused, independent NuGet packages so you only pull in what you need.

High-Level Feature Packages

Package NuGet Description
Dapplo.Windows NuGet Window management, enumeration, and WinEvent hooks
Dapplo.Windows.Clipboard NuGet Reactive clipboard monitoring and manipulation
Dapplo.Windows.Dpi NuGet DPI awareness and scaling support
Dapplo.Windows.Input NuGet Keyboard/mouse hooks and input generation
Dapplo.Windows.Messages NuGet Windows message definitions and WndProc helper
Dapplo.Windows.Devices NuGet Device information and change notifications
Dapplo.Windows.Dialogs NuGet Modern file/folder picker dialogs (no WinForms/WPF required)
Dapplo.Windows.Icons NuGet Icon extraction and handling
Dapplo.Windows.Multimedia NuGet Windows Multimedia (WinMM) wrappers
Dapplo.Windows.AppRestartManager NuGet Automatic restart registration with Windows Restart Manager
Dapplo.Windows.InstallerManager NuGet Installer-specific Restart Manager APIs

Specialized Feature Packages

Package NuGet Description
Dapplo.Windows.Citrix NuGet Citrix environment detection and querying
Dapplo.Windows.DesktopWindowsManager NuGet DWM (Aero/Composition) API access
Dapplo.Windows.EmbeddedBrowser NuGet Enhanced WebBrowser control with configurable IE version

Low-Level API Packages

These packages provide thin, well-typed P/Invoke wrappers and are used as building blocks by the high-level packages.

Package NuGet Description
Dapplo.Windows.User32 NuGet User32.dll wrappers (windows, input, display)
Dapplo.Windows.Gdi32 NuGet GDI32.dll and GDI+ wrappers (graphics)
Dapplo.Windows.Kernel32 NuGet Kernel32.dll wrappers (system operations)
Dapplo.Windows.Advapi32 NuGet Advapi32.dll wrappers (registry, services, security)
Dapplo.Windows.Shell32 NuGet Shell32.dll wrappers (shell integration)
Dapplo.Windows.Com NuGet COM interop helpers
Dapplo.Windows.Common NuGet Shared types, extensions, and utilities

Quick Start

# Install only what you need
Install-Package Dapplo.Windows           # Window management
Install-Package Dapplo.Windows.Clipboard # Clipboard monitoring
Install-Package Dapplo.Windows.Input     # Keyboard/mouse hooks
Install-Package Dapplo.Windows.Dpi       # DPI awareness

See the Getting-Started page for code examples and setup instructions.

Wiki Pages

Topic Description
Getting-Started Installation, setup, and first steps
Window-Management Querying, enumerating, and manipulating windows
Clipboard Monitoring and manipulating the clipboard
Input-Handling Keyboard and mouse hooks and input generation
DPI-Awareness Building DPI-aware Windows applications
Restart-Manager Registering applications with Windows Restart Manager
Icon-Creation Extracting and working with icons
Common-Scenarios Multi-package recipes for common real-world tasks
SharedMessageWindow The hidden message window powering clipboard, input, devices, sessions, and more

Requirements

  • Windows OS (the library wraps native Windows APIs)
  • .NET Framework 4.6.2 or higher
  • .NET Core 3.1 or higher / .NET 5+ (for most packages)

Build Status

Build and Deploy Coverage Status

License

MIT — see LICENSE.

Clone this wiki locally