2012-08-20 14 views
6

Estoy diseñando un software de utilidad de Windows para Windows 7 codificado en Python con wxpython para la interfaz gráfica de usuario works.I no quiero abrir mi software si ya está abierto. Quiero una función como esta si el usuario abre ese software un cuadro de mensaje se mostrará en la pantalla de Windows que muestra que "su aplicación ya se está ejecutando".Python: Cómo prohibir la apertura de una aplicación si ya se está ejecutando

Por favor ayuda. Gracias de antemano ...

+0

Simplemente curioso ... ¿Cómo combinas Python 3 con wxPython? Por lo que sé, no hay wxPython para Python 3.x. Probablemente deberías eliminar las etiquetas relacionadas. – pepr

Respuesta

9

Ya existe una instalación de wxPython que implementa la lógica deseada, llamada wx.SingleInstanceChecker. Aquí está y el ejemplo de código (descaradamente tomado de 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() 

Este ejemplo canónico (por una cuestión de suerte) hace exatly lo que has pedido.

Cuestiones relacionadas