Anwendung schon geöffnet?
-
Hallo.
Wie kann ich wenn meine Anwendung gestartet wurde, schauen, ob sie mehrmals geöffnet ist oder nur einmal?
Danke!
-
CreateMutex wäre eine lösung
int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { // überprüfen ob programm schon gestartet ist CreateMutex(NULL, TRUE, "Anwendung gestarted"); if(GetLastError() == ERROR_ALREADY_EXISTS) { HWND hWndFirst; hWndFirst = FindWindow(SZWNDCLASS, NULL); BringWindowToTop(hWndFirst); SetForegroundWindow(hWndFirst); return -1; } // .....
-
Jo, das funzt, hast noch etwas vergessen, aber hier der ganze Code:
int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { // überprüfen ob programm schon gestartet ist CreateMutex(NULL, TRUE, "Anwendung gestartet"); if(GetLastError() == ERROR_ALREADY_EXISTS) { HWND hWndFirst; hWndFirst = FindWindow("TForm", NULL); BringWindowToTop(hWndFirst); SetForegroundWindow(hWndFirst); return -1; } ReleaseMutex(hWndFirst);
-
Windoof schrieb:
Jo, das funzt, hast noch etwas vergessen, aber hier der ganze
auch nicht ganz richtig

int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { // überprüfen ob programm schon gestartet ist HANDLE hMutex = CreateMutex(NULL, TRUE, "Anwendung gestartet"); if(GetLastError() == ERROR_ALREADY_EXISTS) { HWND hWndFirst; hWndFirst = FindWindow("TForm", NULL); BringWindowToTop(hWndFirst); SetForegroundWindow(hWndFirst); return -1; } // ...... ReleaseMutex(hMutex);
-
Jo, stimmt... Hast ma wieder recht
Danke nochmal.