VB6 - Lanciare un programma a cui passare un parametro

di il
1 risposte

VB6 - Lanciare un programma a cui passare un parametro

Salve a tutti.
Ho due programmi in VB6 (di cui ho il sorgente) P1 e P2, da cui devo far partire un terzo programma (sempre in VB6 e di cui ho il sorgente) P3. C'è però il problema che da P1 devo passare a P3 un parametro di tipo Estro20.Application (è un oggetto di un ambiente di sviluppo che potrei paragonare a grandi linee a un Object). Da P2 invece non devo passare niente.
Ho quindi escluso di lanciare P3 tramite shell perchè da quanto ne so posso solo passare parametri di tipo alfanumerico (se sbaglio correggetemi pure. Sono davvero alle prime armi in questo senso).
Ho provato quindi a creare P3 come Exe ActiveX per poter inserire un modulo di classe in cui ho inserito la seguente funzione
Public Sub LanciaNotifiche(app As Estro20.Application)
    If app Is Nothing Then
        ... (parti non significative per la soluzione del problema)
    Else
        ... (parti non significative per la soluzione del problema)
    End If
    Load frmTray
End Sub
Così facendo in P1 e P2 ho inserito tra i riferimenti P3.exe per lanciare P3 in questo modo
- da P1
Public notifiche As Notifiche.modFunzioni
....
Set notifiche = New P3.modFunzioni
Call notifiche.LanciaNotifiche(Application)
Per terminarlo faccio
Call notifiche.Termina
Set notifiche = Nothing
- da P2
Sub Main()
    Dim notifiche As P3.modFunzioni
 
    Set notifiche = New P3.modFunzioni
    Call notifiche.LanciaNotifiche(Nothing)
    Set notifiche = Nothing
    End
End Sub
E fin qui sembra tutto ok. Il problema è che all'apertura della form frmTray in P3 faccio una serie di controlli che, se non sono superati, devono impedire l'esecuzione del programma. Di solito uso l'istruzione End, ma in questo caso mi viene generato un errore, come se nei progetti Exe ActiveX non si potesse usare.
Come posso fare? Il problema più grosso è che mi sembra di non gestire bene le varie istanze del programma e quindi ho come l'impressione di lasciare qualcosa "aperto", in esecuzione.

Io ho descritto quello che ho fatto, ma ovviamente se ci sono soluzioni più efficienti ed efficaci sono pronta a riscrivere il codice. Ho veramente fatto dei tentativi un po' a caso, perchè il mio cliente non mi lascia tempo per documentarmi e vuole avere risultati immediati e quindi ho fatto quello che sono riuscita, ma non credo sia un buon lavoro.

Spero di aver descritto a fondo il problema e di non aver tralasciato dettagli significativi.
Grazie a tutti per qualsiasi suggerimento.

Patrizia

1 Risposte

  • Re: VB6 - Lanciare un programma a cui passare un parametro

    Ciao se lasci istanze attive è grave.
    Prova avvalendoti del task manager di windows per capire se hai attive più istanze del normale.
    Per quanto riguarda l'istruzione End che non viene eseguita (non ho capito bene come e dove la usi) hai provato a sostituirla con Exit Function ?
Devi accedere o registrarti per scrivere nel forum
1 risposte