Laden...

Programm auf erneuten Aufruf Warten und Paramter übernehmen

Erstellt von Maffi1986 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.458 Views
Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 5 Jahren
Programm auf erneuten Aufruf Warten und Paramter übernehmen

Hallo,

ich habe ein Sip Phone, das bei einem eigehenden Anruf ein Programm aufrufen kann und die Telefonnummer übergibt.

Wie bekomme ich den Aufruf hin, das Programm läuft ja schon und soll kein zweites mal gestartet werden, muss ich dazu eine zweite exe erstellen mit NamePipe Client/Server oder kann man das auch mit einem Programm erschlagen?

Viele Grüße

Maffi

16.807 Beiträge seit 2008
vor 5 Jahren

Ich versteh die Frage nicht, aber willst Du verhindern, dass eine Anwendung mehrmals gestartet wird?
Wenn ja, siehe FAQ: mehrere Programminstanzen verhindern?

Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 5 Jahren

Hallo Abt,

vielen Dank für deine Antwort.

nicht ganz,

Das Sipphone ruft bei jedem Anruf c:\myCscharpProjekt.exe 030123466 auf. Ich möchte dann die Telefonnummer verarbeiten, wenn jetzt 10 verschiede personen anrufen dann wird das 10x ausgeführt

c:\myCscharpProjekt.exe 030123466
c:\myCscharpProjekt.exe 0292236554
c:\myCscharpProjekt.exe 020568547
c:\myCscharpProjekt.exe 025563322
...

und ich hab dann 10x im Taskmanager die Application gestartet.

Vielen Dank

Maffi

4.931 Beiträge seit 2008
vor 5 Jahren

Der FAQ-Artikel ist schon der richtige für dich. Dadrin wird auch (von herbivore) auf Dateiassoziation: Neue Dateinamen an die laufende Anwendung übergeben ("Beispiel für .Net2.0 unter Verwendung von IPC") verwiesen, d.h. die Programmargumente der neuen Anwendungsinstanz werden an die laufende Anwendung übergeben. Das Auswerten mußt du dann natürlich noch selber ausprogrammieren.

Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 5 Jahren

Hallo TH69,

vielen Dank für das Feedback, ich bin mir nicht sicher ob dass das richtige ist, von dem SipPhone (Phoner Lite) habe ich keinen Zugriff auf den Quellcode, ich muss also die Daten via Parameter empfangen. Ich hatte mir wie oben erwähnt schon die Methode mit den NamePiepes angeschaut, aber soweit ich das verstehe muss ich dafür eine Client/Server lösung haben, ich kann aber in dem Phoner nicht mehr implementieren. Aktuell denke ich drüber nach, dass unsauber über eine Textdatei laufen zu lassen (Phoner erstellt via Batch eine Textdatei mit der Telefonnummer und ich polle die Textdatei und warte auf veränderungen). Ich hatte nur gehofft das schöner lösen zu können.

Viele Grüße

Maffi

16.807 Beiträge seit 2008
vor 5 Jahren

Naja, aber das was Du oben und mit "ich muss also die Daten via Parameter empfangen." beschreibst löst mehrere Programminstanzen verhindern? zu 100%.

4.931 Beiträge seit 2008
vor 5 Jahren

Maffi, hast du dir den Sourcecode mal angeschaut? Deine Anwendung selbst ist quasi Server als auch Client für die Parameterübergabe (Unterscheidung mittels if (pobjIOwnMutex)).
Es laufen also kurzzeitig 2 Instanzen deiner Anwendung, aber nachdem die zweite Instanz die Parameter an die erste übergeben hat, beendet sich diese selbst wieder und es läuft weiterhin nur noch die erste Instanz.

Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 5 Jahren

Ich habe nun das Ganze mit der SingleInstance unter Anwendung von Mutex soweit hinbekommen, nur startet scheinbar keine 2. Instanz mehr. Der Ablauf soll folgendermaßen sein:

Instanz starten mit Parametern, wenn neue Instanz, dann übernimm die Parameter des neuen Aufrufs und beende die alte Instanz.

Was habe ich nicht bedacht oder welchen weiteren Ansatz gibt es dafür?

Vielen Dank für die Hilfe!

16.807 Beiträge seit 2008
vor 5 Jahren

a) wir können nicht hellsehen, was Du getan hast
b) musst Du eigentlich nur die Lösung in mehrere Programminstanzen verhindern? übernehmen - wie gesagt; hier ist exakt die Lösung Deiner beschriebenen Sache.