-
-
Notifications
You must be signed in to change notification settings - Fork 21
Home
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.
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).
The library is intentionally split into focused, independent NuGet packages so you only pull in what you need.
| Package | NuGet | Description |
|---|---|---|
| Dapplo.Windows | Window management, enumeration, and WinEvent hooks | |
| Dapplo.Windows.Clipboard | Reactive clipboard monitoring and manipulation | |
| Dapplo.Windows.Dpi | DPI awareness and scaling support | |
| Dapplo.Windows.Input | Keyboard/mouse hooks and input generation | |
| Dapplo.Windows.Messages | Windows message definitions and WndProc helper | |
| Dapplo.Windows.Devices | Device information and change notifications | |
| Dapplo.Windows.Dialogs | Modern file/folder picker dialogs (no WinForms/WPF required) | |
| Dapplo.Windows.Icons | Icon extraction and handling | |
| Dapplo.Windows.Multimedia | Windows Multimedia (WinMM) wrappers | |
| Dapplo.Windows.AppRestartManager | Automatic restart registration with Windows Restart Manager | |
| Dapplo.Windows.InstallerManager | Installer-specific Restart Manager APIs |
| Package | NuGet | Description |
|---|---|---|
| Dapplo.Windows.Citrix | Citrix environment detection and querying | |
| Dapplo.Windows.DesktopWindowsManager | DWM (Aero/Composition) API access | |
| Dapplo.Windows.EmbeddedBrowser | Enhanced WebBrowser control with configurable IE version |
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 | User32.dll wrappers (windows, input, display) | |
| Dapplo.Windows.Gdi32 | GDI32.dll and GDI+ wrappers (graphics) | |
| Dapplo.Windows.Kernel32 | Kernel32.dll wrappers (system operations) | |
| Dapplo.Windows.Advapi32 | Advapi32.dll wrappers (registry, services, security) | |
| Dapplo.Windows.Shell32 | Shell32.dll wrappers (shell integration) | |
| Dapplo.Windows.Com | COM interop helpers | |
| Dapplo.Windows.Common | Shared types, extensions, and utilities |
# 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 awarenessSee the Getting-Started page for code examples and setup instructions.
| 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 |
- 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)
MIT — see LICENSE.