Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Mehrfachstart unterbinden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
19.11.2004, 16:31 Uhr
~raptorxp
Gast


Hi,

Ich suche auch schon in anderen Foren eine Antwort auf folgendes Problem:

Ich habe ein Programm erstellt, welches nur einmal gestartet werden darf.
Wenn das Programm nochmals aufgerufen wird, soll es das erste in den Vordergrund holen und nicht nochmal starten.

Hat jemand eine Ahnung wie man das macht?

Verwendetes Progrramm zum erstellen: C++ Builder 4


PS: Was ich benötige sind Angaben, welche Sachen eingebunden werden müssen, was wo deklariert sein muss und was wie zugewiesen / ausgeführt werden muss. (kurz: möglichst eine Verständliche Komplettanleitung)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.11.2004, 16:33 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Äh mit der WinApi weiss ich so direkt nicht wie die sophistcated methode geht... mit der MFC gibts für sowas die Klass CMutex... mit der WinApi würde mir höchstens einfallen alle gestarteten Prozesse einzeln von Hand durchzugehen (was garantiert eine viel zu komplizierte Lösung ist. warte mal noch nen Weilchen da weiss bestimmt der Guybrush ne Antwort drauf wenn er sich hier wieder rumtreibt...)
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 19.11.2004 um 16:34 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.11.2004, 16:36 Uhr
Spacelord
Hoffnungsloser Fall


Mit WinApi ist auch ein benanntes Mutex der Lösungsweg.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.11.2004, 16:38 Uhr
~raptorxp
Gast


Ging zumindest schnell mit der Antwort

Ja, ich werde auch warten, denn ich bin wirklich keiner der ständig programmiert und weiß dementsprechend z.B. nicht, was du jetzt meintest (müsste jetzt wieder lange in Büchern rumstöbern).

Ich habe leider momentan eine Aufgabe von meinem Vater erhalten, die die oben beschriebene Funktion beinhlaten soll, doch es ist echt nicht leicht, was dazu zu finden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.11.2004, 16:40 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


*kopfklatsch*
da steht ja sogar ne Lösung in unserer FAQ
www.fun-soft.de/showtopic.php?threadid=1325&time=1081326128
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.11.2004, 16:46 Uhr
~raptorxp
Gast


Danke für den Link.
Ich werde mal schauen, ob ich verstehe, wie das zu nutzen ist.
Falls ich es nicht verstehe, werd ich mich nochmal melden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.11.2004, 16:53 Uhr
~raptorxp
Gast


Wie gedacht, kein Erfolg.

Ich habe viele Sachen für VISUALC++ gesehen, doch alle sind sie nicht einfach so übernehmbar in Borland C++ Builder.

Kurz: der Link hilft mir auch nicht weiter.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.11.2004, 16:56 Uhr
Spacelord
Hoffnungsloser Fall


Das Prinzip ist folgendes:
Du erstellst beim Programmstart mit CreateMutex ein Mutex und gibst diesem einen Namen(Ein Mutex ist ein Synchronisations-Kernelobjekt das systemweit bekannt ist).
Wenn der Code erneut aufgerufen wird versucht dieser wiederum dass benannte Mutex zu erstellen.Das schlägt aber fehl weil das benannte Mutex ja bereits besteht.Wenn du jetzt also GetLastError mit der Konstanten ERROR_ALREADY_EXISTS vergleichst weißt du ob deine Anwendung schon läuft oder nicht und kannst dann entsprechend reagieren.
Beim ersten Aufruf deiner Anwendung ist der Vergleich von GetLastError mit ERROR_ALREADY_EXISTS ja false und deshalb wird der darauf folgende Code nicht ausgeführt.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.11.2004, 17:02 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von ~raptorxp:
Wie gedacht, kein Erfolg.

Ich habe viele Sachen für VISUALC++ gesehen, doch alle sind sie nicht einfach so übernehmbar in Borland C++ Builder.

Kurz: der Link hilft mir auch nicht weiter.

Sowohl CreateMutex als auch GetLastError sind WinAPI Funktionen die funktionieren auch mit nem Borland Compiler.Da läuft bei dir irgendwas anderes grundlegend schief.
Wie sieht denn dein Code aus?
Was für Fehlermeldungen hast du?

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.11.2004, 17:17 Uhr
~raptorxp
Gast


Mein Problem wäre erstmal zu wissen, wie ich denn das (was z.B. im Link steht) ins Programm einbinden kann.

Wenn ich es direkt übernehme kommt nur die Fehlermeldung:


Zitat von Verfasser:

[C++ Fehler] Casecalculator.cpp(26): E2316 'TCasecalculatorv1::InitInstance()' ist kein Element von 'TCasecalculatorv1'.


Bisheriges Aussehen des Teils:


C++:
BOOL TCasecalculatorv1::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;
  }
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: