I want to implement drag and drop functionality for emails in my Visual Basic application. However, the format of the dragged object differs depending on whether the user is using Outlook Classic or the new Outlook.
I could query the registry and check if UseNewOutlook
exists, and based on that, decide which format to use. However, this feels more like a workaround rather than a long-term or clean solution.
Additionally, I do not want to determine the version by checking if the format of the dragged object is empty. My application will also have other features that depend on knowing the Outlook version upfront.
Is there a reliable and clean way to check if the user is using Outlook Classic or the new Outlook, without relying on registry checks or object format detection?
I attempted to determine the Outlook version by reading from the Windows Registry:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Preferences
Field: UseNewOutlook
However, if the user has only installed the new Outlook, the UseNewOutlook
field does not exist.
The two Outlooks have nothing but name in common. The formats they expose are also very different: classic Outlook exposes MSG files, new Outlook - EML (MIME) files. And as of today (March 2025), new Outlook will error out when you try to read the drag/drop data, so you cannot even access the message content in any format.