Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492

    Esecuzione applicazione

    Salve a tutti
    c'è un modo per evitare di aprire un'applicazione creata in VB6 in più sessioni su uno stesso pc?
    voglio evitare che se l'applicazione è già aperta, e per errore o volontariamente si riclicca sul file per lanciare l'applicazione, la stessa viene riaperta. Vorrei solo che se accade ciò vengo riportato all'unica sessione se già aperta.

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    per questo scopo ti conviene usare una Sub Main(), all'interno della quale, come prime 3 righe metti queste:

    codice:
    If App.PrevInstance Then
        End
    End If
    Boolean

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Come al solito grazie mille Boolean

    Provo e ti faccio sapere se va tutto bene o se nascono alcuni prob con il mio codice

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Funziona alla perfezione
    Come posso fare però oltre a non far aprire altra sessione se si rilancia il programma, a far aprire la schermata del programam già avviato?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cioe'?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Nel senso che se il programma è già aperto, ma non in primo piano, e lo si ricerca di riaprire dall'icona, compare in primo piano.

  7. #7
    fargli avere il focus intendi ne? mmh in vb6 nn saprei... in vb.net basta cercare nella lista processi attivi il proc ke ti interessa e poi avviare il metodo setFocus
    -----
    101110101011101111100000
    -----

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Si, l'idea sarebbe quella alla fine

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    Avete idee su come risolvere questo problema anche su VB6?
    Vorrei al App.PrevInstance non si chiudesse semplicemente la 2a istanza, ma che anche mi riattivasse la prima (che è solo nell'area di notifica).
    Si può fare anche su VB6?

    Grazie

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Certo che si puo' fare ...

    Aggiungi un modulo, inserisci questo codice e fai partire il progetto dal Main

    codice:
    Private Const SW_RESTORE = 9
    
    Private Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
    
    Public Sub Main()
    
        Dim hwndApp As Long
    
        If App.PrevInstance Then
            hwndApp = FindWindow("ThunderRT6FormDC", "Form1") ' <--- Titolo
            If hwndApp Then
                If IsIconic(hwndApp) Then
                    Call ShowWindow(hwndApp, SW_RESTORE)
                End If
            
                Call SetForegroundWindow(hwndApp)
            End If
        Else
            Form1.Show
        End If
    End Sub
    Considera che dovrai modificare il Titolo del form per fare in modo che venga trovato dalla FindWindow ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.