Ich möchte verhindern, dass mehrere Instanzen von meinem Programm gestartet werden können. Was ist da die gängige Methode um das zu verhindern? Ein kleines Beispiel wäre nett
Gruß
Ein Singleton http://gethelp.devx.com/techtips/cpp_pr ... in0200.asp würde das Problem lösen.Delryn hat geschrieben:Hallo![]()
Ich möchte verhindern, dass mehrere Instanzen von meinem Programm gestartet werden können. Was ist da die gängige Methode um das zu verhindern? Ein kleines Beispiel wäre nett
Gruß
Code: Alles auswählen
HANDLE hMultipleStartProtection = OpenMutex(MUTEX_ALL_ACCESS,0,"MyApplicationName");
if(!hMultipleStartProtection)
{
hMultipleStartProtection = CreateMutex(0,0,"MyApplicationName");
}
else
{
// bring the existing window to front
HWND hWnd=FindWindow(0,"MyApplicationName");
SetForegroundWindow(hWnd);
return 0;
}
Direkt so nicht, aber Du kannst darin elegant vieles verstecken, zB. machen einige bei der Singleton Implementierung das Teil gleich thread safe (mit einem Mutex) zB durch Angabe eines weiteren Template Parameters. boost dürfte so ein Bsp. haben.Delryn hat geschrieben:Ich versteh nicht, wie mir ein Singleton hier helfen sollte![]()
Code: Alles auswählen
int main(int argc, char *argv[]) {
if (!is_file(LOCK_FILE_APPLICATION)) {
/* session start */
file_put_contents(LOCK_FILE_APPLICATION,"");
QApplication a( argc, argv );
Shop_Main::self()->show();
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
return a.exec();
} else {
/* session end */
return 0;
}
};