Вопрос: Как запустить только один экземпляр приложения?
Если оно уже запущено, то активизировать его?

Ответ :

code:
--------------------------------------------------------------------------------

WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
{
    try {
        //*************************************************************
        // Versuche Mutex zu offnen:

        HANDLE hMutex = OpenMutex( MUTEX_ALL_ACCESS, 0, "MeineAnwendung1.0" );

        // Mutex-Handle ist 0, Mutex erzeugen:

        if ( !hMutex )
            hMutex = CreateMutex( 0, 0, "MeineAnwendung1.0" );
        else {
            // Dies ist die 2. Programminstanz. Die erste Instanz in
            // Vordergrund bringen:

            HWND hWnd = FindWindow( 0, "FensterTitel" );
            SetForegroundWindow( hWnd );

            // Meldung ggf. anzeigen:

            ShowMessage( "Das Programm ist bereits aktiv. Es kann nicht erneut gestartet werden !" );
            return 0;
        }

        //*************************************************************

        Application->Initialize();
        Application->CreateForm( __classid ( TfrmMain ), &frmMain );
        Application->Run();

        //*************************************************************
        // Mutex wieder freigeben:

        ReleaseMutex( hMutex );

        //*************************************************************

    } catch ( Exception & exception ) {
        Application->ShowException( &exception );
    }

    return 0;
}


--------------------------------------------------------------------------------

	

Электронные Книги по компьютерным программам
На правах рекламы:
Логин
Пароль
Запомнить меня