Utilisez Sub Main comme objet de démarrage.
Faire un module comme celui-ci
Option Explicit
Private TerminateDetect As Terminate
Public Sub Main()
Set TerminateDetect = New Terminate
MsgBox "Setup"
End Sub
Ensuite, votre résilier classe ressemble à ceci
Option Explicit
Private Sub Class_Terminate()
MsgBox "I terminated"
End Sub
Une classe de test que je fait est ce
Option Explicit
Public Description As String
Public Sub Test()
MsgBox "test"
End Sub
J'ai fait une forme sans des références comme ceci
Option Explicit
Private O As Object
Private Sub Command1_Click()
Set O = CreateObject("TestUnload.Dummy")
O.Test
End Sub
Private Sub Command2_Click()
Set O = Nothing
End Sub
Lorsque je clique sur Command1 j'obtiens deux message un pour charger la DLL et un autre pour exécuter Test. Puis quand je clique sur Command2.
Cet exemple est plutôt brutal alors j'espère que vous comprendrez le point.
Résumé Créez une classe TDLLManagement dans chaque ActiveX dont vous disposez. Placez votre code Initialize dans Class_Initialize et votre code Terminate dans Class_Terminate. Ensuite, demandez à Sub Main de créer une instance de cette classe et de l'affecter à une variable de module privée. Notez que si vous avez des classes GlobalMultisuse et référencez directement la DLL ActiveX, vous voulez effectuer des tests simples pour voir où la DLL se charge.
Avez-vous le code source de ces DLL ActiveX VB6? –
Oui, j'ai le code source pour eux. – dommer
Quel est le motif pour détecter cela? Mise à niveau? – AnthonyWJones