Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Nachrichten zwischen Anwendungen austauschen (lokal)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.06.2003, 18:03 Uhr
Criena



Hi.

Als Anfänger habe ich folgendes Problem:
Anwendung A startet Anwendung B, überprüft ob Anwendung B (korrekt) läuft, Anwendung A beendet sich.

Das Starten und Beenden ist kein Problem ;-).
Und zum Überprüfen habe ich mir überlegt, daß AnwA AnwB eine Nachricht schickt. Daraufhin bestätigt AnwB die Nachricht und AnwA kann sich guten Gewissens beenden.

Wie kann ich das am Besten oder Einfachsten realisieren?

Grüße aus dem sonnigen Hessen,
Criena
--
"Don't Panic!"
(The Hitch Hikers Guide to the Galaxies)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.06.2003, 11:11 Uhr
ao

(Operator)



Zitat:
Das Starten und Beenden ist kein Problem


Wie machst du es denn, es gibt mehr als einen Weg.

Und verstehe ich richtig, daß du von beiden Anwendungen den Sourcecode hast, d.h. du kannst diesen Nachrichten-Mechanismus in beide einbauen?

Nicht, daß du in Wahrheit wissen willst, wie man Word startet und anschließend kontrolliert, ob es läuft.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.06.2003, 18:34 Uhr
Criena



Das Starten wird per CreateProcess() erledigt. Das Beenden habe ich mit PostQuitMessage (0) gemacht (vielleicht nicht der beste Weg, aber es funktioniert erstmal).

Beide Programme sind Eigenentwicklungen, den Quelltext kann ich also beliebig ändern.

Criena
--
"Don't Panic!"
(The Hitch Hikers Guide to the Galaxies)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.06.2003, 00:04 Uhr
ao

(Operator)


Was ich jetzt vorschlage, ist nur ne Idee, ich habs nicht ausprobiert.

CreateProcess ist schon gut. Zuallererst erzeugst du in A einen Event (CreateEvent) und weist diesem dabei einen Namen zu. Dann rufst du CreateProcess und startest B und setzt dabei den Parameter bInheritHandles auf true, damit B sich den Event holen kann. Danach macht A ein WaitForSingleObject auf dem Event.

In B holst du dir den Event mit OpenEvent und dem Namen. Dann machst du auf diesem Event ein SetEvent. Damit zeigt B A an, daß es läuft. A wacht aus seinem Wait auf und kann sich in Ruhe beenden.

Geshare-te Resourcen sind natürlich etwas gefährlich; vermutlich wird der Event zerstört, wenn A sich beendet; B darf also danach nicht mehr auf den Event zugreifen.

Wie gesagt, nur so als Idee. Vielleicht klappts ja so.

Gruß

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.06.2003, 14:30 Uhr
Christian
C/C++ Master
(Operator)


Hi!

Wieso denn mit Events, das ist doch viel zu aufwendig. Einfach eine User definined Message an den anderen Prozess schicken und schon passt. Mit SendMessage dürfte das kein Problem sein. Das Fensterhandle kannst du mit FundWindow(..) suchen.
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.06.2003, 14:40 Uhr
Criena



Hi.

Das mit SendMessage() hört sich gut (und einfach ;-) an.
Ginge das denn auch wenn AnwB kein Fenster hat? Kann ich das Handle irgendwie durch CreateProcess() holen?

Grüße,
Criena
--
"Don't Panic!"
(The Hitch Hikers Guide to the Galaxies)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.06.2003, 19:44 Uhr
Christian
C/C++ Master
(Operator)


Hi!

Wenn du PostThreadMessage(..) verwendest, dann solltest du zum Ziel kommen. Dafür benötigst du nur die ThreadId, die du ja aus dem letzten Parameter der CreateProcess Funktion einholen kannst.

Grüße
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.06.2003, 19:44 Uhr
Christian
C/C++ Master
(Operator)


Nochwas, der Hitchhiker lebe hoch!!!!
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.06.2003, 23:53 Uhr
Criena



Danke, das hat mir sehr weitergeholfen. Auch einen großen Dank an ao, aber das scheint mir ein wenig zu kompliziert, für mich als Anfänger. ;-)

Grüße,
Criena

P.S. Douglas Adams war einer der genialsten Autoren dieser Welt.
--
"Don't Panic!"
(The Hitch Hikers Guide to the Galaxies)

Dieser Post wurde am 09.06.2003 um 23:53 Uhr von Criena editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: