<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Events empfangen!]]></title><description><![CDATA[<p>Ich brauche ein bißchen Hilfe bei der C++ Programmierung. Ich<br />
bin nähmlich Anfängerin.</p>
<p>Ich habe zwei Programme die miteiander kommuniezieren sollen.<br />
Das erste Programme ist eine Art Wächter der die ganze Zeit aktive sein soll und lauscht ob sich etwas beim zweiten Programm verändert hat. Der Wächter soll also Events vom zweiten Programm abfangen.<br />
Der Wächter greift auf das zweite Programm über eine Schnittstelle.</p>
<p>Was ich erreichen will ist dass, wenn ich beim diesen zweiten Programm ein bestimmten Knopf drücke, dass der Wächter dieses Ereigniss irgendwie empfängt.</p>
<p>Die einzige Möglichkeit die ich bisher aber habe, ist den Wächter, nach dem Drüpcken des Knopfes, über Pfadeingabe zu starten. Das ist aber nicht ganz was ich will, denn eine Intanz der Wächter soll schon voher aktiv sein. Sonst würde ich jedes Mal dass ich ein Wert ändere und den Knopf drücke eine neue Instanz des Wächters erzeugen.</p>
<p>Hat irgendeiner eine Idee wie man generell solche Probleme löst, Thread od. sonst was. Mein Schnittstelle ist nich sehr flexible, die erlaubt nur Initialisierung, Abfrage und Zuweisung von neuen Werte oder Infos.</p>
<p>Vielen Dank in voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/63882/events-empfangen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 06:44:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/63882.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Feb 2004 15:39:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 15:39:52 GMT]]></title><description><![CDATA[<p>Ich brauche ein bißchen Hilfe bei der C++ Programmierung. Ich<br />
bin nähmlich Anfängerin.</p>
<p>Ich habe zwei Programme die miteiander kommuniezieren sollen.<br />
Das erste Programme ist eine Art Wächter der die ganze Zeit aktive sein soll und lauscht ob sich etwas beim zweiten Programm verändert hat. Der Wächter soll also Events vom zweiten Programm abfangen.<br />
Der Wächter greift auf das zweite Programm über eine Schnittstelle.</p>
<p>Was ich erreichen will ist dass, wenn ich beim diesen zweiten Programm ein bestimmten Knopf drücke, dass der Wächter dieses Ereigniss irgendwie empfängt.</p>
<p>Die einzige Möglichkeit die ich bisher aber habe, ist den Wächter, nach dem Drüpcken des Knopfes, über Pfadeingabe zu starten. Das ist aber nicht ganz was ich will, denn eine Intanz der Wächter soll schon voher aktiv sein. Sonst würde ich jedes Mal dass ich ein Wert ändere und den Knopf drücke eine neue Instanz des Wächters erzeugen.</p>
<p>Hat irgendeiner eine Idee wie man generell solche Probleme löst, Thread od. sonst was. Mein Schnittstelle ist nich sehr flexible, die erlaubt nur Initialisierung, Abfrage und Zuweisung von neuen Werte oder Infos.</p>
<p>Vielen Dank in voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452596</guid><dc:creator><![CDATA[JennyFromTheBlock]]></dc:creator><pubDate>Thu, 05 Feb 2004 15:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 15:57:12 GMT]]></title><description><![CDATA[<p>Hem, da gibt es mehrere Möglichkeiten. Die einfachste und mit Standard C++ zu realisieren, sind Functionpointer.<br />
Du mußt dazu deiner Klasse die die Events abfeuern soll, den Funktionspointer (den sie aufrufen soll), bekannt geben. Wenns mehrere Event-Empfänger sind, legst du die in einem std::vector ab.</p>
<p>Jedesmal wenn ein Event gefeurt werden soll, wird die Funktion aufgerufen und kannst auch Parameter übergeben.</p>
<p>WIe Functionpointer funktionieren, wurde hier im Forum bestimmt schon abgehandelt (Suchfunktion!) oder du schaust mal in ein vernünftiges C++-Buch rein. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Functionpointer funktionieren aber nur innerhalb eines Programms.</p>
<p>Ein weitere Möglichkeit wäre aber auch, das ganze über Sockets und TCP/IP zu machen. Aber da brauchst du weitere Libs für, in der STL sind diese nicht enthalten. Dann kannst du über TCP/IP kommunizieren, selbst wenn es zwei verschiedene Programme sind und sogar (wenn es sein muß) auf verschiedenen Rechnern. Mit den entsprechenden Libs auch schnell realisiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452610</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 05 Feb 2004 15:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 16:01:40 GMT]]></title><description><![CDATA[<p>2 verschiedene Programme und Funktionspointer ^^ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>@Jenny</p>
<p>Welches OS verwendest Du denn ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452616</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Thu, 05 Feb 2004 16:01:40 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 17:24:22 GMT]]></title><description><![CDATA[<p>Ach, was ich vergessen hatte zu erwähnen ist dass ich das zweite Programm gar nicht modifizieren kann, ich verfüge nicht über den Quellcode, est ist nur eine exe Datei. Ich kann nur über eine DLL Schnittstelle darauf zugreifen. Also weiss ich in Prinzip gar nicht ob das, was ich mit dem Events erreichen will überhaupt realisierbar ist.</p>
<p>Die Sache ist nur, wenn ich eben auf diesem Knopf drücke, wird eine zweite Instanz vom Wächter erzeugt obwohl eine schon aktiv ist. Kommunizieren tut das Programm aber mit der erste Instanz des Wächters, komischerweise. Deswegen dachte ich, irgendwie schafft das Programm zu merken wenn sich etwas verändert, ich weiss bloß nicht wie.</p>
<p>Das sind die Parameter mit dem ich das Programm calc, in der main(...)-Methode meine Wächter-Klasse initialisiere, mit Hilfe des Konstruktors von calc:</p>
<p>const DWORD dwFlags = MANUALINIT<br />
LPCTSTR Name const = &quot;calc&quot;<br />
UINT uSharedMemorySize = NULL<br />
const DWORD dwTimeout = INFINITE<br />
const TimeoutHookProc timeoutHookProc = NULL<br />
void *const pVoid = NULL</p>
<p>dann rufe ich Init(); Hier bleibt das Programm erst stehen, ich weiss nicht wieso.</p>
<p>dannach rufe ich diverse Methode der Schnittstelle auf, bis zum den Punkt kommt das Programm aber bei der erste Instanz nicht, da es bei Init stehen bleibt.</p>
<p>Wenn ich jetzt aber in calc mit Hilfe des Knopfes eine zweite Instanz vom Wächter starte, wird die Methode Init in der erste Instanz (also im ersten DOS Fenster) endlich zu Ende ausgeführt und die weitere Schnittstellen-Methoden aufgerufen.<br />
Blöderweise habe ich aber jetzt das DOS-Fenster der zweite Schnittstelle, die ich nicht brauche und die ihrerseite auch bei Init stehen bleibt.</p>
<p>Ich weiss, es ist ein bißchen verwirrend, aber leider komme ich überhaupt nicht weiter. Ich habe früher nur Java programmiert, und verstehe noch nicht ganz, diese ganze Abläufe bei C++. Wäre sehr dankbar für jede Hilfe.</p>
<p>Was war eigentlich mit OS gemeint?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452686</guid><dc:creator><![CDATA[JennyFromTheBlock]]></dc:creator><pubDate>Thu, 05 Feb 2004 17:24:22 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 17:25:26 GMT]]></title><description><![CDATA[<p>Betriebssystem (Operating System) war damit gemeint.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452688</guid><dc:creator><![CDATA[.]]></dc:creator><pubDate>Thu, 05 Feb 2004 17:25:26 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 17:26:38 GMT]]></title><description><![CDATA[<p>Standard C++ kümmert sich nicht um den Austausch von Daten zwischen mehreren Prozessen. Da du offensichtlich Windows verwendest, passt deine Frage auch besser ins WinAPI Forum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452690</guid><dc:creator><![CDATA[davie]]></dc:creator><pubDate>Thu, 05 Feb 2004 17:26:38 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 17:29:26 GMT]]></title><description><![CDATA[<p>JennyFromTheBlock schrieb:</p>
<blockquote>
<p>Ich habe zwei Programme die miteiander kommuniezieren sollen.<br />
Das erste Programme ist eine Art Wächter der die ganze Zeit aktive sein soll und lauscht ob sich etwas beim zweiten Programm verändert hat. Der Wächter soll also Events vom zweiten Programm abfangen.</p>
</blockquote>
<p>das problem ist nicht gerade ein c++-problem. eher eines deines betriebssystems. interprozesskommuniekation geht so allein in c++ nicht richtig. außer mit kommunikation über dateien oder programmaufrufe. sag also, welches bs du hast und der thread wird dahingeschoben. dann können wir ganz konkret werden.</p>
<p>da du gerade das wort Event verwendet hast. ja, bei mancen BSen gibt es events. oder semaphoren, pipes, shared memory und noch ähnliche dinger.</p>
<p>bei deienem problem müßte ich mehr wissen.</p>
<p>ist das event sowas wie &quot;klappe ist auf&quot; oder &quot;Klappe ist zu&quot;? dann ist ein event ideal. also wenn nur ein status bekannt sein muß.</p>
<p>sind die statusänderunen selbst wichtig, dann sind semaphoren angesagt. die zählen mit. man kann z.b. 5 statusänderungen schicken ubd der empfänger arbeitet dann auch 5 ab.</p>
<p>sind daten mitzuschicken, könnten pipes gut sein.</p>
<p>und statt pipes kann man natürlich auch über tcp-ip miteinander reden.</p>
<p>beispielpseudocode für semaphoren:</p>
<pre><code class="language-cpp">int sendermain()
{
   Semaphore sema(&quot;eindeutigername&quot;);
   sema.signal();
}
int empfängermain()
{
   Semaphore sema(&quot;eindeutigername&quot;);
   for(;;)
   {
      sema.wait();
      cout&lt;&lt;&quot;der sender hat mir bescheid gesagt&quot;&lt;&lt;endl;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/452699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452699</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 05 Feb 2004 17:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 17:34:49 GMT]]></title><description><![CDATA[<p>Ich verwende MS Windows 2000 Professional.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452707</guid><dc:creator><![CDATA[JennyFromTheBlock]]></dc:creator><pubDate>Thu, 05 Feb 2004 17:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 17:39:47 GMT]]></title><description><![CDATA[<p>Geht es dir darum Nachrichten an die andere Anwendung zu schicken, oder was genau hast du vor <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Hast du Konsolenanwendungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452715</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Thu, 05 Feb 2004 17:39:47 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 17:43:49 GMT]]></title><description><![CDATA[<p>Nun ich möchte über die Schnittstelle Werte auslesen, die brauche ich für eine Konsistenzprüfung, und dann will ich einfach 0 zurückgeben falls alles in Ordnung ist. Ja z.Z ist es eine Konsoleanwendung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452718</guid><dc:creator><![CDATA[JennyFromTheBlock]]></dc:creator><pubDate>Thu, 05 Feb 2004 17:43:49 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 18:01:03 GMT]]></title><description><![CDATA[<p>Allerdings will ich die Werte erst auslesen nachdem, ein bestimter Knopf gedrückt worden ist. Deswegen die Frage mit den events.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/452741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452741</guid><dc:creator><![CDATA[JennyFromTheBlock]]></dc:creator><pubDate>Thu, 05 Feb 2004 18:01:03 GMT</pubDate></item><item><title><![CDATA[Reply to Events empfangen! on Thu, 05 Feb 2004 19:07:50 GMT]]></title><description><![CDATA[<p><a href="http://msdn.microsoft.com/library/en-us/ipc/base/interprocess_communications.asp" rel="nofollow">Interprocess Communications</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/452823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/452823</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Thu, 05 Feb 2004 19:07:50 GMT</pubDate></item></channel></rss>