Non sapevo come descrivere questo mio dubbio, tutto è nato nellaa creazione di un Loader ( vi ricordate? ) per le mie applicazioni, riassuamento controlla se c'è una nuova versione, se c'è la scarica e avvia il programma aggiornato altrimenti si chiude e avvia il programma come al solito.
Tutto era nato a causa di un problema nel chiudere tutto il programma per fare l'aggiornamento, ed eravamo venuti a capo del problema dicendo che cnviene fare un Loader.
Ora mi trovo di fronte a un problema che mi era già capitato tempo fa e che avevo aggirato, cioè che, come in questo caso il comando Unload Me, quando lanciato, invece che scaricare la Form me la riesegue, cioè se io alla fine di FormActivate (o FormLoad) metto questo comando invece che andare in QueryUnload mi ricarica tutto il progetto come se lo avessi appena aperto, ecco il codice:
Sono io che non sò cos'è l'Unload ed è normale che faccia così o sbaglio qualcosa? A rigor di logica io mi immagino che con questo comando mi si interrompa l'esecuzione e, appunto, vada nella Sub Form_Unload(Cancel As Integer) o QueryUnload o se dovesse mancare chiuda tutto.Codice:Option Explicit Private Sub Form_Load() '##### Posiziono la Form ##### Me.Top = (Screen.Height - Me.Height) / 2 Me.Left = (Screen.Width - Me.Width) / 2 frm_main.Caption = " Applicazione" '##### Controllo se bisogna aggiornare ##### Dim Linea As String Dim Attuale As Date Dim Nuova As Date '##### Trovo la data della versione in uso ##### Open App.Path & "\Version.ini" For Input As #1 Input #1, Linea Attuale = CDate(Linea) Close #1 '##### Trovo la data dell'ultima versione ##### Open "\\DiscoRete\Applicazioni$\Applicazione\Version.ini" For Input As #1 Input #1, Linea Nuova = CDate(Linea) Close #1 '##### Controllo se bisogna aggiornare ##### If Nuova > Attuale Then Me.Show Else Call Shell("Client.exe", vbNormalFocus) Unload Me '##### Al momento risolvo con il comando End ##### End If '##### Inserisco il Change Log ##### Open "\\DiscoRete\Applicazioni$\Applicazione\Change Log.txt" For Input As #1 Do Until EOF(1) Input #1, Linea txt_change_log.Text = txt_change_log.Text & Linea & vbCrLf Loop Close #1 '##### Svuoto le variabili ##### Linea = 0 Attuale = 0 Nuova = 0 End Sub Private Sub cmd_aggiorna_Click() Dim FSO As New Scripting.FileSystemObject FSO.CopyFolder "\\DiscoRete\Applicazioni$\Applicazione", App.Path, True Call Shell("Client.exe", vbNormalFocus) Unload Me End Sub




Rispondi Citando











