04-03-2008 06:36 AM
04-03-2008 06:58 AM
Hallo hupe,
du könntest versuchen mit der Funktion "FindWindowA" aus der User32.dll ein Handle auf dein Program zu bekommen. Wenn es funktioniert, dann exisitiert bereits eine Instanz deiner Anwendung.
Mike
04-03-2008 08:38 AM
04-03-2008 08:44 AM
Hallo hupe,
mit diesem Beispiel kannst Du dir das Handle des Fensters holen (also deiner Applikation). Gib den Namen an der in der Titelleiste angezeigt wird. Wenn ein Fenster existiert das diesen Namen trägt, dann bekommst du einen Wert ungleich null geliefert.
Mike
04-03-2008 08:56 AM
04-03-2008 09:39 AM
04-03-2008 09:44 AM
Hallo hupe,
du kannst dir auch alle tasks anzeigen lassen die laufen und dann abfragen wie oft deine exe dabei ist. Den dazu passenden Quellcode habe ich aber im Moment nicht greidbar. In deinem Fall ist es doch jetzt aber möglich (auch beim ersten mal) zu schauen ob die exe schon läuft und dann zu entscheiden was du machst. Wenn die Applikation noch nicht läuft dann ist der Rückgabewert der Funktion null, also kann dein Programm starten. Versuchst du nun eine zweite Instanz zu starten, dann ist der Rückgabewert nicht null sondern das Handle zu dem Programm, so dass du das zweite gestartete wieder beenden kannst (oder du zeigst eine Meldung an).
So habe ich bisher deine Anforderung gesehen.
Mike
04-03-2008 10:20 AM
04-03-2008 10:24 AM - edited 04-03-2008 10:25 AM
Hi hupe,
entschuldige, mein Denkfehler.
Ich werde nach dem anderen Quellcode schauen.
Mike
04-03-2008 10:34 AM
Hallo hupe,
falls OHM.exe von LabVIEW erstellt wurde, wird diese exe nur einmal gestartet, wenn sie sich im gleichen Ordner befindet, d. h. C.\Projekt\OHM.exe läuft nur einmal. Nur wenn sich OHM.exe in verschiedenen Ordnern befindet oder kopiert und umbenannt wurde kann es mehrmals laufen.