<?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[SharedMemory Änderung erzeugt Windows Message]]></title><description><![CDATA[<p>Servus,</p>
<p>ich habe ein SharedMemory Bereich. Diesen kann ich über einfach über ein Zeiger (z.B. pZeiger[0]) schreiben und lesen.</p>
<p>Meine Fragen:</p>
<p>- Kann ich daraus lesen während ein anderer Vorgang daraus liest oder darin schreibt. Ich denke nicht.<br />
- Ich möchte eine Änderung im Speicher direkt in einem MFC Programm anzeigen lassen. Z.B.</p>
<pre><code class="language-cpp">DDX_Text(pDX, IDC_Wert1, pExCon[1]);
</code></pre>
<p>Bei zwei MFC Programmen läuft das einwandfrei. Wenn ich als zweites Programm eine DLL laufen lassen, funktioniert das nicht. Welche Möglichkeiten habe ich, eine Änderung im Speicher im MFC Programm zu melden?</p>
<pre><code class="language-cpp">void CExConDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	memmap(&quot;D:/ExCon.tmp&quot;,
		0006,
		sizeof(double)*6,
		&amp;ExCon);
	double* pExCon = (double*) memGetAddr(&amp;ExCon);

	for(;pExCon[0]==1;);
	pExCon[0] = 1;
	//{{AFX_DATA_MAP(CExConDlg)
	DDX_Text(pDX, IDC_Wert1, pExCon[1]);
	DDX_Text(pDX, IDC_Wert2, pExCon[2]);
	DDX_Text(pDX, IDC_Wert3, m_Wert3);
	DDX_Text(pDX, IDC_Wert4, m_Wert4);
	//}}AFX_DATA_MAP
	pExCon[0] = 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/206436/sharedmemory-änderung-erzeugt-windows-message</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Apr 2026 19:08:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206436.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Feb 2008 11:05:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SharedMemory Änderung erzeugt Windows Message on Mon, 25 Feb 2008 11:05:27 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>ich habe ein SharedMemory Bereich. Diesen kann ich über einfach über ein Zeiger (z.B. pZeiger[0]) schreiben und lesen.</p>
<p>Meine Fragen:</p>
<p>- Kann ich daraus lesen während ein anderer Vorgang daraus liest oder darin schreibt. Ich denke nicht.<br />
- Ich möchte eine Änderung im Speicher direkt in einem MFC Programm anzeigen lassen. Z.B.</p>
<pre><code class="language-cpp">DDX_Text(pDX, IDC_Wert1, pExCon[1]);
</code></pre>
<p>Bei zwei MFC Programmen läuft das einwandfrei. Wenn ich als zweites Programm eine DLL laufen lassen, funktioniert das nicht. Welche Möglichkeiten habe ich, eine Änderung im Speicher im MFC Programm zu melden?</p>
<pre><code class="language-cpp">void CExConDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	memmap(&quot;D:/ExCon.tmp&quot;,
		0006,
		sizeof(double)*6,
		&amp;ExCon);
	double* pExCon = (double*) memGetAddr(&amp;ExCon);

	for(;pExCon[0]==1;);
	pExCon[0] = 1;
	//{{AFX_DATA_MAP(CExConDlg)
	DDX_Text(pDX, IDC_Wert1, pExCon[1]);
	DDX_Text(pDX, IDC_Wert2, pExCon[2]);
	DDX_Text(pDX, IDC_Wert3, m_Wert3);
	DDX_Text(pDX, IDC_Wert4, m_Wert4);
	//}}AFX_DATA_MAP
	pExCon[0] = 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1462351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462351</guid><dc:creator><![CDATA[etsmart]]></dc:creator><pubDate>Mon, 25 Feb 2008 11:05:27 GMT</pubDate></item><item><title><![CDATA[Reply to SharedMemory Änderung erzeugt Windows Message on Tue, 26 Feb 2008 21:02:06 GMT]]></title><description><![CDATA[<p>klar kannst du gleichzeitig schreiben und lesen<br />
doof ist nur ... wenn man das nicht synchronisiert kommt oft blödsinn dabei raus</p>
<p>was das andere angeht... du könntest ja jeden prozess der an dem shared memory bereich was ändert irgendwas machen lassen was andere prozesse mitbekommen, ne window message broadcasten oder sonstwas</p>
<p>oder du kannst den bereich einfach periodisch überprüfen und immer gucken obs änderungen gibt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463618</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 26 Feb 2008 21:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to SharedMemory Änderung erzeugt Windows Message on Thu, 28 Feb 2008 08:50:52 GMT]]></title><description><![CDATA[<p>Das muss sehr schnell sein, weil es Verwendung findet in einem Simulationsprogramm. Was bietet sich da an(z.B. WindowsMessage).</p>
<p>Periodisch schauen, ob es Änderung gibt, mach ich gerade. Aber da kommt es nach kurz oder lang zu einem Access Violation. Deshalb die Frage, ob ich lesen und schreiben gleichzeitig kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464551</guid><dc:creator><![CDATA[etsmart]]></dc:creator><pubDate>Thu, 28 Feb 2008 08:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to SharedMemory Änderung erzeugt Windows Message on Thu, 28 Feb 2008 08:54:56 GMT]]></title><description><![CDATA[<p>etsmart schrieb:</p>
<blockquote>
<p>Das muss sehr schnell sein, weil es Verwendung findet in einem Simulationsprogramm. Was bietet sich da an(z.B. WindowsMessage).</p>
<p>Periodisch schauen, ob es Änderung gibt, mach ich gerade. Aber da kommt es nach kurz oder lang zu einem Access Violation. Deshalb die Frage, ob ich lesen und schreiben gleichzeitig kann.</p>
</blockquote>
<p>Du musst die Daten mit einem Mutex schützen!<br />
Dann könntest Du zusätzlich einen Event nehmen, der abzeigt, dass es neue Daten gibt.</p>
<p>Wenn es nur einen Client gibt ist das einfach... gibt es mehrere Clients würde ich auf Pipes umsteigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464556</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 28 Feb 2008 08:54:56 GMT</pubDate></item><item><title><![CDATA[Reply to SharedMemory Änderung erzeugt Windows Message on Thu, 28 Feb 2008 21:04:32 GMT]]></title><description><![CDATA[<p>Naja, wenn irgendwie möglich würde ich einfach nur einen Prozess verwenden.<br />
Und wenn schon RPC sein muss, dann nicht unbedingt selbst mit Shared-Memory was hacken, sondern Mechanismen ala Pipes, Message-Slots, Sockets etc. verwenden.<br />
Oder gleich DCOM, wenn das schnell genug ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1465103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1465103</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 28 Feb 2008 21:04:32 GMT</pubDate></item></channel></rss>