Laden...

Eigenem Programm durch zweite Instanz einen neuen Auftrag erteilen

Erstellt von maxwell86 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.160 Views
M
maxwell86 Themenstarter:in
32 Beiträge seit 2010
vor 13 Jahren
Eigenem Programm durch zweite Instanz einen neuen Auftrag erteilen

Hallo zusammen,

ich habe mir ein kleines Programm zum Screenshot-Schiessen gebastelt. Das funktioneirt alles einwandfrei. Jetzt habe ich an meiner Tastatur eine Taste, die ich mit einer Exe-Datei verknüpfen kann. Das funktioniert auch. Aber wenn jetzt natürlich shcon eine Instanz läuft, öffnet er eine zweite instanz. Ich will aber, dass er einfach wieder den Screenshot-Modus startet. Deshalb habe ich es bisher so gelöst:
Beim Start des Programmes wird überprüft ob bereits eine Instanz des Programmes besteht. Wenn nein, wird das Programm einfach gestartet. Wenn doch, wird die alte Instanz geschlossen und die neue Instanz im Screenshot-Modus gestartet. Schöner wäre freilich in der ersten Instanz eine Aktion auslösen zu könnnen und das Starten der zweiten Instanz abzubrechen, aber da weiß ich leider auch nicht wie das geht.
So, das Schließen der ersten Instanz funktioniert aber leider nicht nur mit der CloseMainWindow-Funktion, sonder nur mit Kill(). Das finde ich aber erstens irgendwie unelegant und zweitens wird dann leider mein Tray-Icon nicht entfernt! D.h. wenn ich 10 Screenshots starte, habe ich 10 Icons unten rechts drin. Erst wenn ich mit der Maus drüber fahre gehen die weg. Das neervt natürlich.
Also meine Frage: Wie kann ich es schaffen, dass ich mit meinem iegenen Programm eine eigene Instanz beenden kann?

Danke euch,
Max

916 Beiträge seit 2008
vor 13 Jahren

Hallo maxwell86,

Schöner wäre freilich in der ersten Instanz eine Aktion auslösen zu könnnen und das Starten der zweiten Instanz abzubrechen, aber da weiß ich leider auch nicht wie das geht.

Ich glaub das ist das eigentlich Ziel, denn dann musst du das aktuelle Program nicht mehr beenden, sondern schaust einfach ob eine Instanz aktiv ist und führst dann einfach die Aktion an der Instanz aus. Dafür denke ich wirst du um COM nicht rum kommen, daher handle besorgen und eine bestimmte message an die Intanz senden. Diese muss dann darauf reagieren und die gewünschte Aktion ausführen.

Again what learned...

M
maxwell86 Themenstarter:in
32 Beiträge seit 2010
vor 13 Jahren

handle = windwohandle? Ich denke das bekomme ich bereits. Dann werde ich mir mal ein COM-Tutorial suchen!

Danke!

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo maxwell86,

siehe [FAQ] mehrere Programminstanzen verhindern (inkl. Parameterübergabe)

Hallo rollerfreak2,

COM wird nicht benötigt

herbivore

916 Beiträge seit 2008
vor 13 Jahren

Stimmt herbivore,

das mit Mutex zu lösen ist natürlich der deutlich bessere Weg. Einfach einen eindeutigen Namen vergeben und beim Neustart schauen ob dieser Mutex schon existiert.

Again what learned...