Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Programm auf erneuten Aufruf Warten und Paramter übernehmen
Maffi1986
myCSharp.de - Member

Avatar #avatar-3437.gif


Dabei seit:
Beiträge: 54
Herkunft: Soest

Themenstarter:

Programm auf erneuten Aufruf Warten und Paramter übernehmen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15702
Herkunft: BW

beantworten | zitieren | melden

Ich versteh die Frage nicht, aber willst Du verhindern, dass eine Anwendung mehrmals gestartet wird?
Wenn ja, siehe FAQ: mehrere Programminstanzen verhindern?
private Nachricht | Beiträge des Benutzers
Maffi1986
myCSharp.de - Member

Avatar #avatar-3437.gif


Dabei seit:
Beiträge: 54
Herkunft: Soest

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von Maffi1986 am .
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4001

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
Maffi1986
myCSharp.de - Member

Avatar #avatar-3437.gif


Dabei seit:
Beiträge: 54
Herkunft: Soest

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15702
Herkunft: BW

beantworten | zitieren | melden

Naja, aber das was Du oben und mit "ich muss also die Daten via Parameter empfangen." beschreibst löst mehrere Programminstanzen verhindern? zu 100%.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4001

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Maffi1986
myCSharp.de - Member

Avatar #avatar-3437.gif


Dabei seit:
Beiträge: 54
Herkunft: Soest

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15702
Herkunft: BW

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers