2015-02-26 4 views
1

Я создал exe с использованием py2exe. Тем не менее, я могу открыть несколько экземпляров моего exe. Как обеспечить, чтобы за один раз запускался только один экземпляр exe. Я заметил, что dropbox достиг этого, используя py2exe.Создание exe exe с использованием py2exe

+0

возможно дубликат [предельное число экземпляров класса ти питона] (http://stackoverflow.com/questions/11458477/limit-number-of-class-instances-whith-python) –

ответ

1

Это решение, которое наконец-то сработало. Мьютекс, доступный в pywin32, делает именно то, что требуется.

from win32event import CreateMutex 
from win32api import CloseHandle, GetLastError 
from winerror import ERROR_ALREADY_EXISTS 

class singleinstance: 
    """ Limits application to single instance """ 

    def __init__(self): 
     self.mutexname = "testmutex_{D0E858DF-985E-4907-B7FB-8D732C3FC3B9}" 
     self.mutex = CreateMutex(None, False, self.mutexname) 
     self.lasterror = GetLastError() 

    def aleradyrunning(self): 
     return (self.lasterror == ERROR_ALREADY_EXISTS) 

    def __del__(self): 
     if self.mutex: 
      CloseHandle(self.mutex) 
Смежные вопросы