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
... (truncated)
Commits
8bb41e6 Updated nullability of ShlwApi IUnknown_xx method parameters
0734178 Added additional enums and extension methods for IGlobalOptions.
e2145c9 Change default valeus in MSG.ctor to prevent confusion
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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.User32 from 4.0.1 to 4.0.2.
Release notes
Sourced from Vanara.PInvoke.User32's releases.
... (truncated)
Commits
8bb41e6
Updated nullability of ShlwApi IUnknown_xx method parameters0734178
Added additional enums and extension methods for IGlobalOptions.e2145c9
Change default valeus in MSG.ctor to prevent confusion6b2c881
Another adjustment after changea3b8865
Corrected side effect814a588
Enhanced FunctionHelper.IidGetObj50cc66d
Added nullable param to IDataObjectV.EnumFormatEtc51a12aa
Added missing message filters MSGF_COMMCTRL...20946b3
Changed MSG structure so mimics SDK with POINT field rather than each value s...796456a
Updated project filesDependabot 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 show