2012-08-20 10 views
6

Jestem projektowania oprogramowania narzędzie Windows dla Windows 7 kodowane w Python z WxPython dla GUI works.I Nie chcę, aby otworzyć mój oprogramowanie, jeśli jest już otwarte. Chcę taką funkcję, jeśli użytkownik otworzy to oprogramowanie, na ekranie Windows ma zostać wyświetlone okno komunikatu informujące, że "Twoja aplikacja już działa".Python: Jak zabronić otwierania aplikacji, jeśli jest już uruchomiony

Pomoc Plz. Z góry dziękuję ...

+0

Po prostu ciekawy ... Jak połączyć Python 3 z wxPython? O ile mi wiadomo, nie ma wxPython dla Pythona 3.x. Prawdopodobnie powinieneś usunąć powiązane tagi. – pepr

Odpowiedz

9

Istnieje już obiekt wxPython, który implementuje pożądaną logikę o nazwie wx.SingleInstanceChecker. Oto i przykład kodu (bezwstydnie zapożyczone z 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() 

Ten cannonical przykład (dla kwestia szczęścia) sprawia exatly co prosiłem.