I encountered Microsoft’s Basic in 1998. It was familiar to me because of my use of BASIC on GE Timesharing as far back as 1967 (see the ‘About Nick Cottrell‘ tab). I began using VB Script to do various things. At one point, I completed a 900+ line logon script to convert a Novell user profile to Active Directory user profile and swore I would never write a script that large again. I began using VB6 to do things I could not do easily in a script. Not only based on scale and debugging ability but because I also found I could do some neat things with Class Modules and the information in Dan Appleman’s “Visual Basic Programmer’s Guide to the Win32 API”. Leveraging off my assembler experience of the ’70’s and ’80’s, I authored some utilities for the Microsoft OS world.
I had been doing this for a while when Microsoft came out with VB .NET in 2002. I didn’t think it was a big deal and just kept using VB6. I first tried using VB .Net with the 2005 version (Maybe dropping the ‘.NET’ threw me off) and quickly realized that this was VERY different from the world I had been using. Not wanting to learn a new language, I just kept using VB6.
As Microsoft support for Visual Studio 6 began to sunset, I did, or more accurately attempted, converting some of my code to VB 2005 (8.0). Conversion, I found, was difficult, as it remains today, even with very good tools. I continued this with VB 2008 after support for the VB6 IDE ended in April of 2008. I had little success. It almost seemed it is easier to rewrite than convert existing VB6 code.
I began to develop new things in either VB .NET or PowerShell but converted no existing VB6 code (actually I did convert one utility successfully, but the client is still using the VB6 version!). I did notice that my VB6 programs kept running on newer versions of Windows, so I put off any more conversion attempts.
The Sky Opens.
Then a miracle occurred, or at least it was one to me. Microsoft announced “It Just Works” support for VB6 run-time on Server 2008, Vista and Windows 7. Suddenly, there was no pressure to convert\rewrite. Eventually that support was extended through Server 2016, Windows 10, and now Server 2019. That takes runtime support to at least 2025. The specifics are here.
One could ponder if Microsoft will extend VB6 runtime support to future operating systems? I think it is possible. While I have no idea what is motivating Microsoft’s continuing VB6 runtime support, and I emphasize this is just conjecture on my part, it may well be that they too find it difficult to convert VB6 code and have a large VB6 code base they really do not want to rewrite. So, the path of least resistance is to just keep it running. Then again, maybe they just did it to keep me happy — Nah that’s probably not the reason. 🙂
Here’s another possibility, it morphs into VB* (From David Platt in MSDN Magazine). Well, I have my doubts about that too.
So, Why This Blog?
At this point I develop everything ‘new’ in Visual Basic .Net but, because I know VB6 code will likely run for the foreseeable future, I change\extend anything written in VB6 in VB6. The fact is that there is diminishing support for VB6 code, techniques etc. If you look for VB support on the Internet, it will likely be for .NET code or in some cases, not VB code at all, but C#. I hope through this blog to share, and hopefully help other people still maintaining VB6 code or converting it. Along those lines, any pertinent information on my experience with all things Visual Basic such as .Net and scripting will be included here as well. I hope it all helps.