Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    62

    [VB .NET/C#] - Richiamare sempre la stessa istanza di un programma.

    Si, il titolo non si capisce, ma la mia proprietà di sintesi lascia a desiderare.

    Il punto è questo :
    ho associato tutti i file con estensione "*.prova" ad un mio programma in VB .NET e C#

    quindi ogni volta che clicco su un file con questa estensione, parte una nuova istanza del programma.

    Io vorrei che il programma si aprisse una sola volta, e poi quando l'utente clicca su un file con estensione conosciuta, mi richiama sempre la stessa istanza del programma EXE, senza crearne ogni volta una nuova!


    Soluzioni?

    GRAZIE MILLE.

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    in c#, nel program.cs dove hai il main, devi usare un mutex per regolare il fatto che ci deve essere una sola istanza..

    fatto questo, invii al tuo form principale il nome del file (che è un parametro passato come argomento all'eseguibile) così che lui lo usi come meglio credi

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    62
    Grazie, ho raccolto il suggerimento e ho googlato "mutex vb .net"... ho trovato parecchie cose utili che mi hanno portato a risolvere (per il momento) il problema.

    Ne posto un paio per i posteri:

    http://hacking2.0.forumcommunity.net/?t=24434424

    http://forum.html.it/forum/showthrea...readid=1285340

    qui c'è un modo alternativo solo per vb .net
    http://visualcsharp.it/news/tag/mutex/

    questo in c#
    http://visualcsharp.it/news/2008/01/...stanza/#more-9


    GRAZIE.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    62
    Bene, quindi a questo punto, lui si accorge che c'è già un'istanza aperta, e chiude quella corrente, bene.

    Adesso mettiamo che l'istanza presente, sia un form ridotto ad icona (sto usando NotifyIcon) io vorrei che lui tiri su la finestra dell'istanza già presente.

    Fa parte dello stesso discorso, no? Non è che devo aprire un nuovo treadh per chiedere questa cosa...

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    siamo più o meno in tema.. si be, la cosa è la stessa..

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    62
    Originariamente inviato da Stoicenko
    siamo più o meno in tema.. si be, la cosa è la stessa..
    Il mio dubbio era perchè ho già infranto il Regolamento un paio di volte e non volevo continuare...


    Comunque ci sono idee per il problema tecnico che ho descritto? grazie

  7. #7
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    guarda.. se il programma è già in esecuzione non fai altro che massimizzarlo o cmq renderlo visibile..

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    62
    Originariamente inviato da Stoicenko
    guarda.. se il programma è già in esecuzione non fai altro che massimizzarlo o cmq renderlo visibile..
    ho capito... ma, se io ho MIOFILE.exe in esecuzione, e clicco su un file con estensione .PROVA e parte un'altra istanza di MIOFILE.exe... il Mutex s'accorge che già esiste un'istanza e mi butta giù l'istanza corrente, come acchiappo l'istanza che già c'era ?

    ...forse non ho capito un cacchio... :master:

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    62
    Il codice che ho usato fra quelli che ho trovato è questo:

    Private Shared Function IsFirstTimeProcess() As Boolean
    Dim newProcess As Boolean
    mMutex = New System.Threading.Mutex(True, "Logger", newProcess)
    Return newProcess
    End Function
    E nella LOAD metto questa IF qua

    If Not IsFirstTimeProcess() Then
    MsgBox("Programma avviato.", MsgBoxStyle.Exclamation, "Logger")
    Environment.Exit(-1)
    End If
    Così però chiudo l'istanza corrente, e come acchiappo quella che è già presente?

  10. #10
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    devi usare le api di windows credo.. più che altro per "attivare" la finestra dell'istanza corrente.. non credo che ci siano classi del framework che fanno ciò..

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.