(oleexp 5.0 - Released 28 May 2022)
-oleexp now includes all calls neccessary for TLB-based multithreading. Multithreading methods by The trick and Matthew Curland (PowerVB) have all calls included. For the latter, calls to the CreateThread API may need to be adjusted by pass ByVal, especially ByVal 0& for the LPSECURITY_ATTRIBUTES.
Note: As with any multithreading with TLB project, you'll need to be careful you don't have any functions used by the multithreading code declared as Public in your project, as those will always have higher priority than a TLB.
-Added IInertiaProcessor, IManipulationProcessor, and IManipulationEvents interfaces with coclasses InertiaProcessor and ManipulationProcessor (for advanced handling of touch input). While these types are already in an addable reference, one uses unsigned longs, making that version incompatible with VB.
-Added interface IShellIconOverlayManager and coclass CFSIconOverlayManager
-Added SysReAllocStringW alias for SysReAllocString that supports a StrPtr pointer to properly support Unicode, finally relieving the need for a separate API declare for the LPWStrToStr function ubiquitous in oleexp projects (provided you add the W; I didn't want to break backwards compatibility by replacing the original).
-Added ILVRange undocumented ListView interface. This one was *really* undocumented; I was the first to publicly document it:
https://www.vbforums.com/showthread....T-and-ILVRange
-Added interface IShellRunDll; Implements-compatible.
-Updated SIIGBF and various other enums with flags introduced in Windows 8 or 10
-Created enum for SFVM_*... these were previously just commented out in source..
-For CoreAudio, REFERENCE_TIME and HNSTIME are now a public type alias for Currency (take care when using it).
-(Bug fix) Due to some trolling from Microsoft, IAudioClient has several members the public headers and topline documentation declare as WAVEFORMATEX. But in the fine print, you find this is a lie. They actually use WAVEFORMATEXTENSIBLE, and will not work on many systems without it. Since that was not included in the TLB, it's impossible to use. These methods now use As Any, so if the old way was working on your system, no changes are strictly neccessary (but if you're distributing it, your clients may run into it, so you should change it). This bug triggered releasing a new version now. IPolicyConfig, IPolicyConfigVista, IAudioClient2, and IAudioClient3 were also changed.
-(Bug fix) AUDIO_VOLUME_NOTIFICATION_DATA only had a single array member for channel volume. It's set to 2 now to get two channel info, but this may change in the future if I figure out how to get 3+ channel info.
-(Bug fix) Finally corrected built-in AssocCreate API from the olelib original. It was missing 4 bytes; a CLSID is 16, but it originally had long short short long, which is 12. Now BYTE[8].
-(Bug fix) ULONG was defined as an unsigned long, but of course anyone trying to use it would get an error. It's now just an alias for a signed long. And no longer public.
-(mPKEY) SCID_DateDeleted and SCID_OriginalLocation don't have PROPERTYKEY defs in the SDK, but can still be passed (and will be received from) any Recycle Bin property store.