<?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[Nachrichten von anderen Fenstern abfangen]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Ich habe da ein kleineres (größeres) Problem:<br />
Mein Programm soll die Nachricht WM_PAINT, die von der Applikation CamAlert (Überwachungsprogramm für Webcams) gesendet wird, abfangen (jede zehntel Sekunde wird das geprüft). Nähere Infos werdet Ihr sicher aus dem Quellcode herauslesen können:</p>
<pre><code class="language-cpp">void CWinHideDlg::OnTimer(UINT nIDEvent) 
{
	// Nachricht killn
	lpMsg.message = NULL;

	// Suche CamAlert-Hauptfenster
	if((hWnd = ::FindWindow(&quot;ThunderRT6FormDC&quot;, 0)) != NULL)
	{
		// Suche CamAlert PopUp-Fenster
		if((hChield = FindWindowEx(hWnd, 0, &quot;ClsCapWin&quot;, &quot;WebCam (driver)&quot;)) != NULL)
		{
			// Lese Nachricht von PopUp-Fenster
			if(::PeekMessage(&amp;lpMsg, hChield, 0, 0, PM_NOREMOVE))
			{
				// Übersetze Nachricht
				::TranslateMessage(&amp;lpMsg);

				// Werte Nachricht aus
				if(lpMsg.message == WM_PAINT)
				{
					// Suche VLC Fenster
					if((hWnd = ::FindWindow(&quot;wxWindowClassNR&quot;, &quot;VLC media player&quot;)) != NULL)
					{
						// Blende VLC Fenster aus
						::ShowWindow(hWnd, FALSE ? SW_SHOW : SW_HIDE);
						::UpdateWindow(hWnd);
					}
				}

				// Nachricht einstampfen
				::DispatchMessage(&amp;lpMsg);
			}
		}
	}

	// Handles zurücksetzen
	hWnd	= NULL;
	hChield = NULL;

	CDialog::OnTimer(nIDEvent);
}
</code></pre>
<p>Nun zum Problem: Bei if(::PeekMessage... wirfts mich raus und ich habe keine Ahnung, warum. Eigentlich will ich nur prüfen, ob das Fenster &quot;WebCam (driver)&quot; gerade geöffnet ist. Mit nur FindWindow geht das nicht, weil die Fensterklasse ja so lang existiert, bis CamAlert geschlossen und neu gestartet wird. Das ist aber zu Umständlich.</p>
<p>Lange Rede, kurzer Sinn: Ich will einfach nur feststellen lassen, ob das entsprechende CamAlert-Fenster gerade offen ist, oder nicht.<br />
Wer ne Lösung zum PeekMessage-Problem hat, BITTE posten. Wer ne andere Lösung hat als meine, BITTE auch posten (bin am Ende <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> )</p>
<p>Please Help! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175947/nachrichten-von-anderen-fenstern-abfangen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 13:33:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175947.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Mar 2007 17:49:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nachrichten von anderen Fenstern abfangen on Thu, 15 Mar 2007 17:49:58 GMT]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Ich habe da ein kleineres (größeres) Problem:<br />
Mein Programm soll die Nachricht WM_PAINT, die von der Applikation CamAlert (Überwachungsprogramm für Webcams) gesendet wird, abfangen (jede zehntel Sekunde wird das geprüft). Nähere Infos werdet Ihr sicher aus dem Quellcode herauslesen können:</p>
<pre><code class="language-cpp">void CWinHideDlg::OnTimer(UINT nIDEvent) 
{
	// Nachricht killn
	lpMsg.message = NULL;

	// Suche CamAlert-Hauptfenster
	if((hWnd = ::FindWindow(&quot;ThunderRT6FormDC&quot;, 0)) != NULL)
	{
		// Suche CamAlert PopUp-Fenster
		if((hChield = FindWindowEx(hWnd, 0, &quot;ClsCapWin&quot;, &quot;WebCam (driver)&quot;)) != NULL)
		{
			// Lese Nachricht von PopUp-Fenster
			if(::PeekMessage(&amp;lpMsg, hChield, 0, 0, PM_NOREMOVE))
			{
				// Übersetze Nachricht
				::TranslateMessage(&amp;lpMsg);

				// Werte Nachricht aus
				if(lpMsg.message == WM_PAINT)
				{
					// Suche VLC Fenster
					if((hWnd = ::FindWindow(&quot;wxWindowClassNR&quot;, &quot;VLC media player&quot;)) != NULL)
					{
						// Blende VLC Fenster aus
						::ShowWindow(hWnd, FALSE ? SW_SHOW : SW_HIDE);
						::UpdateWindow(hWnd);
					}
				}

				// Nachricht einstampfen
				::DispatchMessage(&amp;lpMsg);
			}
		}
	}

	// Handles zurücksetzen
	hWnd	= NULL;
	hChield = NULL;

	CDialog::OnTimer(nIDEvent);
}
</code></pre>
<p>Nun zum Problem: Bei if(::PeekMessage... wirfts mich raus und ich habe keine Ahnung, warum. Eigentlich will ich nur prüfen, ob das Fenster &quot;WebCam (driver)&quot; gerade geöffnet ist. Mit nur FindWindow geht das nicht, weil die Fensterklasse ja so lang existiert, bis CamAlert geschlossen und neu gestartet wird. Das ist aber zu Umständlich.</p>
<p>Lange Rede, kurzer Sinn: Ich will einfach nur feststellen lassen, ob das entsprechende CamAlert-Fenster gerade offen ist, oder nicht.<br />
Wer ne Lösung zum PeekMessage-Problem hat, BITTE posten. Wer ne andere Lösung hat als meine, BITTE auch posten (bin am Ende <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> )</p>
<p>Please Help! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246245</guid><dc:creator><![CDATA[loop]]></dc:creator><pubDate>Thu, 15 Mar 2007 17:49:58 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten von anderen Fenstern abfangen on Fri, 16 Mar 2007 07:44:57 GMT]]></title><description><![CDATA[<p>Imho solltest du nicht in fremden Message-Queues rumpfuschen - die Nachrichten dort gehören dem anderen Programm (und sind möglicherweise wichtig). Da ist es doch einfacher, die andere Anwendung nach ihrem Status zu fragen (GetWindowPlacement()).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246452</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 16 Mar 2007 07:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to Nachrichten von anderen Fenstern abfangen on Sat, 17 Mar 2007 14:55:03 GMT]]></title><description><![CDATA[<p>Danke für den Tip <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Aber leider hat auch mit dieser Funktion keiner meiner Versuche erfolg <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Ich weis leider nicht, wie dieses blöde CamAlert das Fenster ein u. ausblendet. Habe es deshalb zuerst mit den messages versucht, weil WM_PAINT nur beim eingeblendetem Fenster gesendet wird (habs mit Spy++ geloggt). Aber vielleicht mach ich auch was falsch:</p>
<pre><code class="language-cpp">::GetWindowPlacement(hChield, &amp;WndPlacement);

if(WndPlacement.showCmd == SW_SHOWNORMAL)
{
// gleicher Code zum Ausblenden von VLC ...
}
</code></pre>
<p>Vielleicht kann mir da noch jemand nen heißen Tip geben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Währe sehr dankbar...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1247288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1247288</guid><dc:creator><![CDATA[loop]]></dc:creator><pubDate>Sat, 17 Mar 2007 14:55:03 GMT</pubDate></item></channel></rss>