I know this thread is extremely old, but YES, you can convert your 16-bit VB3 app to at least 32-bit so it runs on any modern Windows operating system, including 64-bit. This is assuming you didn't use any special add-ons in your 16-bit app that didn't come included with VB3 itself. If straight VB is all that you used, then you're in luck and sitting pretty.
Goal:
Run old 16-bit VB3 apps NATIVELY on modern 64-bit versions of Windows without any Virtual Machine crap
Choices/Alternatives:
1. Run everything in a VM, which always sucks because of massive performance loss/overhead. Use this as a safe but ridiculously bloated and potentially expensive last resort.
2. Run everything on 32-bit versions of Windows, which support 16-bit apps. This is automatically enabled in previous versions of 32-bit Window, but requires you to
manually enable "NTVDM" in Windows 10 (32-bit version only). Certainly the easiest and most supported route to take, but the major limitation is that you don't get to run your app under 64-bit Windows.
3. Actually rebuild the VB3 app as a 32-bit app, which will allow it to run on every single version of Windows since (and including) Windows 95. This is the vastly superior solution if the source code is available (which it is, thanks to VB3 decompilers).
Prerequisites:
1. The original Source Code of the app itself
2. If source is not available, VB3 decompilers exist to extract it from the original EXE file, though this is not an easy route to take because the resulting extracted code is often a ghastly mess that will require skilled re-organization. Bonus if the original developer is still alive, let alone available.
3. Microsoft Visual Basic 4.0 Professional, which is the only version of VB that could install as either 16-bit or 32-bit. VB4 can be downloaded from most abandonware web sites. **Cough **
VB4 Download Link ** Cough**. Get the CDROM version if you can, it's a heck of a lit easier to install than the floppy version. VB4 is MUCH bigger of an install than VB3. Make sure it's the Professional version of VB4 no matter what version of VB3 was originally used.
Details:
The ONLY way to truly convert your VB3 apps to at least 32-bit is to load your project into the next version of VB and rebuild, which would be VB4. VB4 allows a VB3 project to be loaded in, automatically updated, and then rebuilt as 32-bit with less effort than trying to load into any later versions of VB, such as VB6. Once you're app is 32-bit, it will then run on ANY modern version of Windows right up to Win10 64-bit. Again, VB4 is all that you need - later versions of VB are not required unless you want to follow an upgrade path that will ultimately allow you to get your (eventual) VB6 project into VB.NET and modernize it from there. The VB to .NET path is not always easy but IS possible if you're willing to be extremely patient and you remain determined. Just think carefully if it's worth it, because your VB4 rebuild alone to 32-bit will be enough to get your VB3 app to run on 64-bit Win10. Just know that your now-VB4 app will be limited in that it will not be aware of modern Windows technologies such as Active Directory domains, anything related to the Internet, etc. Most advice you will find online is that, rather than a long and tedious upgrade path of an old VB project, just re-write a modern .NET version of it from the ground up if at all possible.
Instructions:
1. On a 32-bit version of Windows, install VB4, which allows you to select both 16-bit and 32-bit versions of VB4 for installation. Obviously, you'll want to select 32-bit only (leave 16-bit completely out of the picture). However, since the installer itself is a 16-bit installer, you're stuck installing VB4 into a 32-bit version of Windows - you will not be able to install any version of VB4 into any 64-bit version of Windows because the required 16-bit subsystem is not present in 64-bit WIndows. I have installed both 16/32-bit versions of VB4 into the 32-bit version of Windows 7 with no problems, no virtual machine required (haven't tried it on Windows 8 because you don't run it either). You should even be able to install VB4 onto the 32-bit version of Windows 10, though I haven't tried it yet. I personally like installing VB4 into a Windows 95 VM just for the nostalgia, and also because VB4/32bit was specifically built to run on Win95 in the first place (following intended compatibility is always best when possible). The 16-bit version of VB4 was also specifically designed for Win3x and runs great under it, but I digress.
2. Load your VB3 project into VB4, allowing it to update whatever it needs to in the process. THIS is where a "clean", add-on-free VB3 app really pays off.
3. Make whatever tweaks/changes you need to and build/compile your app - it will now be a 32-bit Windows program. Congratulations, you just brought a 16-bit Windows app into the 21st century with at least a longevity for another 10 years with Windows 10, even 64-bit.
4. Your program will now run on any 32 and 64-bit Windows version. All 64-bit Windows includes something called "WoW", or the Windows-on-Windows subsystem that allows backward compatibility. 32-bit windows wqas able to run 16-bit apps. 64-bit Windows will run 32-bit apps (but not 16). Someday, 128-bit Windows will run 64-bit apps (but not 32).
CRITICAL: Your VB4 app no longer uses a single DLL like VBRUN300.DLL. In addition to requiring VBRUN432.DLL, it may now also require a number of accompanying .OCX files, which is the big game changer that VB4 brought to the table. As such, VB4 Professional Version included tools that allow you to create an installer for your app. You may choose to use it, but I found the installer setup tools that get bundled with VB to be problematic - such as uninstalling critical VB4 system files from the computer if you test your installer/uninstaller on the same system VB4 was installed on (actually breaks VB4, requiring re-installation). Consult the VB4 documentation on deployment of your app.
Good luck with your conversions. Running an app natively is ALWAYS better than the hassles and massive performance-robbing overhead associated with virtual machines, though VMs are wonderfully miraculous when there is no other option.
Bob Hodges
PS: You should be VERY excited whenever Microsoft is willing to release another 32-bit version of Windows, because it also buys those ancient 16-bit Windows applications another 10 years of life. And have you noticed that old 16 and 32-bit software (including Windows itself) is WAY faster than 64-bit if your usage remains under 4GB of RAM (which is most of us actually)? Shhhhh - don't tell anyone.