Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Programm 2x starten

(Anonym) / 4 Antworten / Baumansicht Nickles

Wie kann ich unter Visual C++ (API, kein MFC) verhindern das der User das Programm 2x startet. Unter VB ist das IF App.hinstance=True ...
Aber unter VC weiss ich nicht Hilfe!

bei Antwort benachrichtigen
thomas woelfer (Anonym) „Programm 2x starten“
Optionen

hi.

es gibt verschiedene moeglichkeiten das zu tun; die gaengiste methode ist die verwendung eines mutex. dazu erzeugst du beim start deiner anwendung mit CreateMutex() ein solches objekt unter einem dir bekannten namen. (nicht vergessen den mutex beim ende auch wieder zu zerstoeren.) wenn CreateMutex() mit ERROR_ALREADY_EXISTS zurueckkommt, laeugt bereits eine andere instanz der anwendung.

WM_HOPETHISHELPS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „Programm 2x starten“
Optionen

Was zum Teufel ist denn ein Mutex, und was wenn ein anderes Programm auch so schlau war?

bei Antwort benachrichtigen
Andreas42 (Anonym) „Was zum Teufel ist denn ein Mutex, und was wenn ein anderes Programm auch so...“
Optionen

Hi!

Ein Mutex ist eine Art Sperrmechanismus. Ein Programm setzt quasi eine globale Sperrvariable (der Name der Sperrvariable wird im Programm festgelegt). Will nun ein anderes Programm die gleiche Sperrvariable anlegen, dann wird dies zurückgewiesen bzw. das zweite Programm muss warten, bis das erste Program seine Variable wieder gelöscht hat.
Gedacht ist das in Hauptsache, damit eine Anwendung nicht mehrfach gestartet wird.

Oft wird sowas auch als Applikationssperre (application-lock) bezeichnet.

Damit sich also zwei völlig fremde Programme in die Quere kommen, müssten sie den gleichen Sperrvariablennamen in CreateMutex() angeben.
Das sollte man als Programmierer verhindern, in dem man ein möglichst eindeutigen Namen verwendet (in der Praxis wird man den Programmnamen als Bestandteil einfügen).

Ich hoffe, das hilft dir weiter.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
(Anonym) Andreas42 „Hi! Ein Mutex ist eine Art Sperrmechanismus. Ein Programm setzt quasi eine...“
Optionen

Danke ja hilft wirklich !

bei Antwort benachrichtigen