2012-08-20 1 views
6

Io sono la progettazione di un software di utilità di Windows per Windows 7 codificato in Python con wxPython per GUI lavori.Spero non voglio aprire il mio software se è già aperto. Voglio una funzione come questa se l'utente apre quel software per visualizzare una finestra di messaggio sullo schermo di Windows che mostra che "La tua applicazione è già in esecuzione".Python: come impedire l'apertura di un'applicazione se è già in esecuzione

aiuto Plz. Grazie in anticipo ...

+0

Solo curioso ... Come si combina Python 3 con wxPython? Per quanto ne so, non esiste wxPython per Python 3.x. Probabilmente dovresti rimuovere i tag correlati. – pepr

risposta

9

Esiste già una funzione wxPython che implementa la logica desiderata, chiamata wx.SingleInstanceChecker. Ecco e l'esempio di codice (spudoratamente preso in prestito da wxPython wiki):

import wx 

class SingleAppFrame(wx.Frame): 
    def __init__(self, parent, title): 
     wx.Frame.__init__(self, parent, title=title, size=(300, 300)) 
     self.Centre() 


class SingleApp(wx.App): 
    def OnInit(self): 
     self.name = "SingleApp-%s" % wx.GetUserId() 
     self.instance = wx.SingleInstanceChecker(self.name) 
     if self.instance.IsAnotherRunning(): 
      wx.MessageBox("Another instance is running", "ERROR") 
       return False 
     frame = SingleAppFrame(None, "SingleApp") 
     frame.Show() 
     return True 


app = SingleApp(redirect=False) 
app.MainLoop() 

Questo esempio cannonical (per una questione di fortuna) fa ricade perfettamente quello che hai chiesto.