Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Ich schreibe gerade eine Anwendung, die nur einmal zurzeit gestartet werden soll.

Das Problem war leicht mit einem benannten Mutex gelöst.

So, jetzt mein Problem:

Ich möchte, dass beim wiederholten Startversuch der Anwendung die schon existierende Anwendung in den Vordergrund gebracht wird.

So wie es beim mehrfachen Start von z.B. Outlook ist.

Ich weiß bis jetzt soviel, dass ich zu einem schon existierenden benannten Mutex mit


HANDLE hMutex; 


hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "NameOfMutexObject");

ein Handle bekomme.

Aber wie geht es jetzt weiter?

Schon mal vielen Dank und bitte keine klugen Sprüche wie "Such mal mit Google"!

Geschrieben

Schade, weil ich genau so etwas vorbereitet hatte...


// lösung, falls schon 2 fenster geöffnet sind (findet das eigene immer zuerst)

// ansonsten nur einmal FindWindow aufrufen

CWnd * cw;

cw = FindWindow( 0, "Fenstername" );

CString rg;

while  ( cw =  cw->GetNextWindow() )

	{

		cw->GetWindowText( rg );

		if ( rg == "Fenstername" ) 

			{

				cw->BringWindowToTop();

				break;

			}

	}

Über den Mutex hast Du glaube ich keine Chance an den Prozess oder das Fenster ranzukommen. Du könntest ja im schlimmsten Fall über eine Datei oder einen Registry-Eintrag (den Du halt wieder löschen mußt) Infos übers Hauptfenster weiterreichen. Das wäre aber nicht unbedingt die feine Art.

  • 2 Wochen später...
Geschrieben

Eine andere Möglichkeit wäre

	CWnd* MyInstance = CWnd::FindWindow(NULL,"Fenstername");


	if (MyInstance !=NULL) {

		if (MyInstance->IsIconic()) {

			MyInstance->ShowWindow(SW_RESTORE);

		}

		else {

			MyInstance->SetForegroundWindow();

			return TRUE;

		}

	}

alles muss ins InitInstance()

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...