Release Notes - 4.0.2
Breaking Changes
- Exposed HRESULT in IShellItem.Compare as failing to will throw an exception when the items don't match.
- Changed field type Kernel32.ACTCTX.lpResourceName to ResourceId from string to enable proper handling of resource identifiers.
- Guid.KnownFolderId() and Environment.SpecialFolder.KnownFolderId were changed to return null when value is not found rather than throwing an exception.
- Simplified Shell32.KNOWNFOLDER_DEFINITION to use strings instead of StrPtrUni field types. After testing, it appears that .NET does release the memory during the conversion process to System.String.
- Changed TVGETITEMPARTRECTINFO to a struct and removed hidden memory allocation.
Additions
- Added FunctionHelper.IidGetObj method to help extract interfaces from COM methods
- Added HANDLEConverter class and added to common handles
- Added IEmptyVolumeCache and supporting code
- Added MsgParam attribute to all Property Sheet messages and notifications.
- Added PROPERTYKEY.ctor(string) and CoerceToCanonicalValue
- Added PSCreateMemoryPropertyStore overload to simplify
- Added SHGetImageList overload
- Added SHGetPropertyStoreFromParsingName overload to simplify getting interface
- Added Shell32.SHSaveLibraryInFolderPath
- Added ShellUtil. GetSize, GetWidth, and LoadImageFromImageFactory overloads
- Added TreeView_ message macros. HTREEITEM constants, and (BREAKING CHANGE). Also cleaned and modernized code for TreeView.
- Added Windows.Shell.ShellIconExtractor as a threaded way to get all icons for a folder or list of items.
- Added a number of missing IShellLibrary macros.
- Added additional enums and extension methods for IGlobalOptions.
- Added advanced ctor for CMINVOKECOMMANDINFOEX
- Added implicit conversion from IntPtr to BOOL
- Added manifest to ComCtl32 to include v6 of the library and updated ComCtl32v6Context to use updated ACTCTX types
- Added missing constants and macros from Prsht.h
- Added missing message filters MSGF_COMMCTRL...
- Added nullable param to IDataObjectV.EnumFormatEtc
- Added optional attribute to fields of IFileSaveDialog.ApplyProperties
- Added unit test for SearchApi, but couldn't get it to work per #447. Any help??
Fixes
- Add Pack stmt to Shell32.SHQUERYRBINFO to make compatible with 32 or 64-bit.
- Changed IPropertyStore.SetValue extension so value is coerced to correct type before setting.
- Changed MSG structure so mimics SDK with POINT field rather than each value separate. Should stay backwards compatible.
- Changed from path to PIDL as base for PropertyStore lookup (faster)
- Corrected problem with test code for DoSvc (#465).
- Enhanced FunctionHelper.IidGetObj
- Exposed ReadOnlyPropertyStore and PropertyStore as public non-abstract classes with constructors to get properties directly for a file system item. Adjusted properties and methods from ShellItemPropertyStore to lower-level classes.
- Fixed #467 where IErrorHandler types threw error on ToString method after 4.0.1.
- Fixed IDODownload.SetProperty extension to handle null values and fixed documentation.
- Fixed bug affecting HRESULT.ToString in StaticFieldHasValue.TryGetFieldName
- Fixed bug in IShellLibrary.GetFolderType and added extension methods to convert those Guids to FOLDERTYPEID enum value.
- Fixed bug in ShellContextMenu.InvokeCommand where it wouldn't run if QueryContextMenu had not been called (#468). Thanks to @shuxb711 for the workaround.
- Fixed parameters in INamespaceWalkCB (Shell32) to use PIDL rather than IntPtr
- Made Vanara.Extensions.InteropExtensions.QueryInterface an extension method for
object
. - Minor code optimizations for DnsApi
- More work on PropertyStore to remove blocking of file. Caused consolidation of ReadOnlyPropertyStore into PropertyStore. Locking seems to be fixed.
- Updated ShellItem wrapper with changes to IShellItem.Compare
- Updated nullability of ShlwApi IUnknown_xx method parameters
Full changelog
nullableenabled@{v4.0.1}...master