000
18.01.2003, 16:35 Uhr
Uwe
C/C++ Master (Administrator)
|
Autor U. Fröhlich
Wer kennt nicht das Problem, dass der User eine Anwendung mehrmals aufruft? Um das zu verhindern fügen wir folgendens in der InitInstance() unserer Anwendung ein:
C++: |
BOOL CMyApp::InitInstance() { AfxEnableControlContainer();
// Standardinitialisierung // Wenn Sie diese Funktionen nicht nutzen und die Größe Ihrer fertigen // ausführbaren Datei reduzieren wollen, sollten Sie die nachfolgenden // spezifischen Initialisierungsroutinen, die Sie nicht benötigen, entfernen. HANDLE hMutex = CreateMutex (NULL, TRUE, "Mutex String"); bool gefunden=FALSE; if(GetLastError() == ERROR_ALREADY_EXISTS) gefunden = TRUE; if(hMutex) ReleaseMutex (hMutex); if (gefunden) { AfxMessageBox("Anwendung wurde bereits gestartet!"); return FALSE; } ............ ............ ............ }
|
Die Funktion CreateMutex() verlangt als dritten Parameter einen Zeiger auf einen "null-terminated string". Über diesen String ist es möglich unsere Anwendung eindeutig zu ermitteln bzw. zu identifizieren. Was in dem String steht ist eigentlich unserer Mutex "schnuppe"! -- "Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."
Bis dann... Uwe |