Skip to content

Release Notes - 4.0.2

Latest
Compare
Choose a tag to compare
@dahall dahall released this 24 Jun 19:40

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