Using API to multithread
VB is absolutely not safe. You can find tons of code in the internet that can work for a tiny application and will crash for all the others.
You are in the right track. It is possible to run
VB code in a separate thread of execution putting that code in a class in an ActiveX exe and creating it with GetObject instead of the New operator.
A great book on the subject is "Developing COM/ActiveX components in VB6" by Daniel Appleman (Sams Press). The first section regarding ActiveX exe is ~400 pages long, and that gives you an idea of how a big subject this is. Playing by the rules it is possible to write great and safe multithread applications even in VB6.
As a final point, are you really sure that you need multiple threads? Usually a timer will do the thrick as well, avoiding the creation of an ActiveX components. And many technologies (like ADO) support asynchronous calls.
Marco