Hola, en realidad si que tiene relación, porque lo que hace el code es modificar la memoria de un archivo externo en ejecución, y básicamente es lo que buscas.
1) ¿Cómo saber el nombre de la clase de la aplicación para findwindow?
Es que en realidad, FindWindow te permite buscar el Handle de una ventana por el Tipo (Clase) o por el nombre (Caption), o ambas. Normalmente, es preferible buscar por Nombre.
Para buscar por Nombre (Caption):
Dim hWnd as Long
hWnd = FindWindow(vbNullString, "Sin título - Bloc de notas")
Para buscar por clase:
Dim hWnd as Long
hWnd = FindWindow(clase, vbNullString)
Algunas Clases:
MSOutlook = "OpusApp"
MSExcel = "XLMAIN"
MSIExplorer = "IEFrame"
MSVBasic = "wndclass_desked_gsk"
NotePad = "Notepad"
MyVBApp = "ThunderForm"
Respondiendo a tu segunda cuestión:
Es que los codes que te puse antes sirven para crackear, por ejemplo, cuando te pide serial y muchas otras protecciones. Lo que tu dices, la única forma que veo es mediante Hook a CreateMutex, pero nunca he probado ApiHooks en VB6 y no estoy seguro de si se puede hacer.
La opción 1) debe realizarse posteriormente a la 2), es decir, primero tendrías que hacer un Hook a CreateMutex, para saber cuándo llaman a esa Api, y en ese momento, modificar la memoria del programa objetivo para que se ejecute siempre.
Y la otra opción que se me ocurre, y mucho más factible:
1) Abrir el archivo a ejecutar y obtener los datos en un Array
2) Modificar el/los offsets (en el array) para que nunca salte, es decir, que siempre se ejecute
3) Ejecutar en memoria ese Array (A.K.A RunPE)
Esta última sí que funcionaría 100% en VB6, y es lo que yo haría
Espero que se entienda
Saludos!!