MBS Plugins 21.4 pre-releases


in this thread I want to post to you what’s new in 21.4 prerelease plugins.

download here:


or from Dropbox or ask (in private message or email) to be added to the shared dropbox folder.

If you like our plugins, please bookmark, like or forward this thread.
If not, well you can ignore it.

Thanks for supporting our plugin.

If you have questions, please post your question as a new discussion





  • Added more constants for CCCryptorMBS class.
  • Added RandomGenerateBytes method to CCCryptorMBS class.
  • Fixed problem with borderColor assignment in CALayerMBS class not working.
  • Fixed App.BundleResourceFolderMBS and other functions to handle relative CFURL objects better.
  • Added HEAD as verb for SetupAWS and SetupOAuth functions in CURLSMBS class.
  • Added Contains and Substitute methods to WordFileMBS class.
  • Updated to DynaPDF version
  • Added DeleteOCGFromDisplayTree function to DynaPDFMBS class.
  • Added SetPasteboardItems method taking array of variants to NSPasteboardMBS class.
  • Added NSComboBoxControlMBS control with KeyDown/KeyUp controls.
1 Like


  • Added areBrowserAcceleratorKeysEnabled, IsGeneralAutofillEnabled, IsPasswordAutosaveEnabled, IsPinchZoomEnabled and UserAgent properties to WebView2ControlMBS control.
  • Changed CURLEmailMBS class to cache email source and not render it again each time you query it. And clear it when you change a property of the email.
  • Improved NSViewMBS to work on iOS, internally with UIView.
  • Added userInteractionEnabled property to NSViewMBS class for iOS.
  • Changed WMI examples to initialize in App.Constructor instead of App.Open, so InitSecurity method works.
  • Fixed memory leak in CapturePreview method in WebView2ControlMBS control.
  • Fixed Open property getter/setter for DynaPDFAnnotationExMBS class.
  • Fixed properties for WindowsBlueToothDeviceSearchParameterMBS and WindowsFontFamilyMBS classes.
  • Fixed OptionFileTime and OptionUnrestrictedAuth properties for CURLSMBS class.
  • Fixed problem with RenderPageMT in DynaPDFRasterizerMBS class, where background of picture was not initialized with white.
  • Added more properties for WKPreferencesMBS class.
1 Like


  • Add thread pooling for Windows to be used for multi threaded methods.
  • Added SharingPanelMBS class for sharing on iOS.
  • Fixed a crash in JSONMBS class returning big JSON arrays.
  • Fixed problem on Windows with GraphicsMagick initialization.
  • Updated DynaPDF to version
  • Moved WindowsQOSMBS class into its own plugin part, split from WindowsProxy plugin part.
  • Implemented thread pool for Windows to be used for our MT methods, so threads get reused.


  • Added ReadFileMBS for reading file data into MemoryBlock.
  • Updated SQLAPI to version 5.1.5.
  • Added FieldExists method to SQLCommandMBS class.
  • Fixed Graphics.DrawString to better draw condensed text for DynaPDFMBS class.
  • Added isWindows11 function to SystemInformationMBS module.
  • Fixed problems with AVFoundation Plugin and a conflicting function name for iOS apps.

Last time I’ve tried to find the “official way” there hasn’t been one yet…: SupportedOS ID for Windows 11, Detect Windows 11 with .NET Framework or Windows API, How to detect Windows 11 using Delphi

How is your Plugin checking this?
It would be good to document the behavior, as it seems that the currently used “hacks” (with no official documentation from Microsoft yet) could break…

We check the build number. Let me know whether this fails.

I use some code to check for different OS versions and build number also via registry in addition to the simply GetVersionEx function to get the real build number.

I can confirm with 21.4pr5 that Windows 11 is being detected as Windows 11, and Windows 10 is still detected as Windows 10.

1 Like

That’s what most do - for now.

And yes, it works - for now.

All I’m saying is that we should keep an eye on this, as there is no official information yet. The build number might change (but unlikely be a lower number), or there might be a different Major/Minor for the final version which is more explicit (maybe again unlikely, since it could break existing applications).
Or Microsoft might add a new and official helper method such as in Windows->Apps->Win32->API->Versionhelpers.h : IsWindows10OrGreater function.

The trouble is Windows 11 still advertises itself as Windows 10, at least according to the major.minor.build.rev scheme. Luckily, their build numbers appear to be pretty consistent. Windows 10 build numbers range 10000 to 19999, Windows 11 build numbers 20000 to [presumably] 29999. Windows 8.1 was 9000 to 9999. But you’re right, they haven’t given us an official way to detect Windows 11, I think because it’s mostly a marketing name. Under the hood, it’s still mostly just Windows 10.

Well, we check if it’s 10 and then decide on build number.
If the functions start to report 11, we would pass that back as true for IsWindows11.