Removed support for .NET 2.0, 3.5, and 4.0, .NET Core 2.0, 2.1, and 3.0 since all are or shortly will be out of support.
Added support for .NET 4.8 and 6.0.
Removed PackageReference details for .NET 5 and 6 projects with System.Drawing.Common.
Moved most TargetFrameworks tags out of project files and into Directory.Build.props for easier maintenance.
Breaking Changes due to dependency reduction
Reduced dependencies of almost all assemblies on .NET runtime assemblies not part of core System assemblies, most specifically System.Drawing and System.Windows.Forms. This forced the removal of some overloaded methods and the replacement of leveraged structures and enums with native equivalents.
Added Vanara.Windows.Shell.Common which has all the content from Vanara.Windows.Shell that did not have dependencies.
Removed dependencies on WinForms and WPF for Gdi32 and User32 assemblies. This forced the removal of extension methods to convert HBITMAP and HICON to System.Windows.Media.Imaging.BitmapSource and all uses of IWin32Window.
Extracted all extension methods from Gdi32 and User32 and moved them to Vanara.Windows.Extensions.
Moved TEXTMETRIC, LOGPALLETTE, PALLETTEENTRY, and PC from Gdi32 to Shared project to remove dependencies on Ggi32 by other projects (e.g. Ole).
Added POINT struct to Vanara.PInvoke, changed all System.Drawing.Point reference to POINT, and optimized RECT and SIZE structures.
Added extension assemblies for WinForms, WPF, and WinUI/UWP
Converted ShellView items returning PIDLs to return ShellItems
Upgrade notes
Replace all instances of System.Drawing.Point in Vanara methods and properties with Vanara.PInvoke.POINT
Replace all instances of System.Windows.Forms.Form and Control and IWin32Window with the raw window handle (HWND)
If you are missing other items from System.Drawing or System.Windows.Forms look for new values or check the new Vanara.Windows.Extentions assembly.
New Assemblies
Added Antimalware assembly (Vanara.PInvoke.AMSI) with supporting wrapper class: Vanara.SystemServices.AntimalwareScan.
Vanara.PInvoke.Ime32
Vanara.PInvoke.Usp10 (Uniscribe)
Vanara.PInvoke.WinHTTP
Additions
Added ABN and ABS enums to ShellApi
Added HWND.HWND_BROADCAST constant
Added NMHDR.LParamAsRef method
Added PinnedObject implicit operator to unsafe void*.
Added SafeAllocatedMemoryHandleBase.GetBytes() and pulled SafeMemoryHandle.Locked from IMemoryMethods instance
Added SafeMoveableHGlobalHandle class and added support to locking memory to all memory classes.
Added StringHelper methods supporting encoders
Added Vanara.Windows.Shell.Taskbar class to get/set information regarding the system taskbar.
Added elements from mstcpip.h to Ws2_32
Added extra buffer when setting size from VanaraMarshaler to prevent errors when they're off due to alignment issues
Added helper functions to WINDOWPOS to help when using it with LPARAM values.
Added indexer to SafeMemString
Added missing hook constants from winuser.h
Added tcp_keepalive struct to Ws2_32
Applied new lang constructs to CLIPFORMAT
Extended SafeAllocatedMemoryHandle.ToType extension method to support CharSet
Incorporated non-breaking suggestions for Device and DeviceManager in #282
Made CorrespondingTypeAttribute.GetAttrForEnum public.
Made some optimizing changes to PInvoke.VirtDisk and added VirtualDisk.SetParentPath and SetParentPathWithDepth methods.
Fixes
Changed SafeMoveableHGlobalHandle.ctor(IntPtr...) method to not accept size and rather extract it using GlobalSize
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps Vanara.PInvoke.Shell32 from 3.3.15 to 3.4.0.
Release notes
Sourced from Vanara.PInvoke.Shell32's releases.
... (truncated)
Commits
caee9eb
Updated readme2b4f3bd
Updated project filesdc6cea6
Moved most TargetFrameworks tags out of project files and into Directory.Buil...4909721
Taskbar testsd9259ee
Added Vanara.Windows.Taskbar class to get information on the Shell's taskbar.9b841bd
Simplified implementation of VirtualDisk.GetStorageDependencyInformation6ee30c5
Fixed all the window messages broken when I fixed them the last time. Doh.9e57ba3
Fixed bug with VirtDisk.GetStorageDependencyInformation and implemented Virtu...7b9c170
Pulled back dependency on System.Memory to 4.5.3 for compatibilitya0b39b5
Updated docs and added missing constants to ComCtl32Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)