Mehrfachen Programmstart verhindern



  • Hallo,

    ich programmiere seit einiger Zeit einen Audioplayer und nun möchte ich gerne verhindern das das Programm mehrfach gestartet werden kann und am besten noch eine Info (Dateinamen) an das bereits geöffnete Programm schickt. Ich hoffe ihr könnt mir helfen.

    gruß
    gus484



  • Hallo

    siehe hier

    oder das BCB-Beispiel unter <BCB-Path>\Examples\Controls\SingleInst

    bis bald
    akari



  • Danke ich werde es gleich mal ausprobieren



  • Ich habs mit der Lösung von bytesandmore probiert doch wenn ich den Beispiel Code Compiliere bekomme ich folgende Fehlermeldung:

    [Linker Error] Unresolved external '_Form1' referenced from F:\DOKUMENTE UND EINSTELLUNGEN\ADMINISTRATOR\EIGENE DATEIEN\C++BORLAND\TEST2\PROJECT1.OBJ

    [Linker Error] Unresolved external 'TForm1::' referenced from F:\DOKUMENTE UND EINSTELLUNGEN\ADMINISTRATOR\EIGENE DATEIEN\C++BORLAND\TEST2\PROJECT1.OBJ

    Hier noch mal der gesamte Code

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    
    USERES("Projektname.res");
    USEFORM("FormMain.cpp", frmMain);
    
    //---------------------------------------------------------------------------
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
      try
      {
    
        // *************************************************************
        // Versuche Mutex zu öffnen:
        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;
    }
    //---------------------------------------------------------------------------
    


  • Hi, hatte den Fehler auch mal und hab ewigst gesucht, bis ich einfach mal die ganzen OBJ Datein usw. gelöscht habe und dann alles neu compilliert hab.

    Viell. hilfts bei dir ja auch.

    mfg
    Tom



  • Kann aber auch an dem Verzeichnisnamen liegen: 'C++Borland'
    Der BCB mag keine +-Zeichen in Verzeichnis- und Dateinamen.



  • Hi!

    Habs grad bei mir ausprobiert und hat Fehlerfrei gefunkt, also entweder liegst an den OBJ Datein oder wie JoeM gemeint hat an deinem Pfad, was ich aber eher nicht glaube da auch in meinem Pfad ein + bzw. ein - enthalten sind.

    mfg
    Tom



  • gus484 schrieb:

    [Linker Error] Unresolved external '_Form1' referenced from F:\DOKUMENTE UND EINSTELLUNGEN\ADMINISTRATOR\EIGENE DATEIEN\C++BORLAND\TEST2\PROJECT1.OBJ

    [Linker Error] Unresolved external 'TForm1::' referenced from F:\DOKUMENTE UND EINSTELLUNGEN\ADMINISTRATOR\EIGENE DATEIEN\C++BORLAND\TEST2\PROJECT1.OBJ

    Hier noch mal der gesamte Code

    [cpp]//---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop

    USERES("Projektname.res");
    USEFORM("FormMain.cpp", frmMain);

    Ob da wohl ein Zusammenhang besteht?


Anmelden zum Antworten