<?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[Probleme mit GetPixel]]></title><description><![CDATA[<p>Hi,</p>
<p>ich möchte einen Pixel aus einem fremden Fenster auslesen und habe mir folgendes zusammengebastelt:</p>
<pre><code class="language-cpp">#include &lt;Windows.h&gt; 
#include &lt;Tchar.h&gt; 
#include &lt;vector&gt; 
#include &lt;Iostream&gt;
#include &lt;winuser.h&gt; 
#include &lt;winable.h&gt; 

using namespace std;
HDC myDisplayCanvas;

HWND myWindowHandler;

struct Window 
{ 
	basic_string&lt;TCHAR&gt; title; 
	HWND handle; 
}; 

vector&lt;Window&gt; windows; 

// Callback fr EnumWindows. Wird aufgerufen fr jedes Fenster 
BOOL CALLBACK EnumWindowsProc (::HWND hwnd, ::LPARAM lParam) 
{ 
	// Kein Fenster 
	if (!IsWindow (hwnd)) 
		return (TRUE); 

	// nur sichtbare Fenster auflisten 
	if (!IsWindowVisible (hwnd)) 
		return (TRUE); 

	// Fensterberschrift ermitteln 
	TCHAR title[256]; 
	if (!GetWindowText (hwnd, title, sizeof (title) / sizeof (title[0]))) 
		return (TRUE); 

	// neues Fenster hinzufgen... 
	Window wnd; 
	wnd.handle      = hwnd; 
	wnd.title       = title; 
	windows.push_back (wnd); 

	return (TRUE);
}

// Listet Fenster auf und regelt Auswahl eines Fensters 
HWND select_window (void) 
{ 
	// Alle Fenster auflisten 
	EnumWindows (EnumWindowsProc, 0); 

	// Liste aller Fenster ausgeben. 
	vector&lt;Window&gt;::iterator window_it = windows.begin (); 
	for (int i = 0; window_it != windows.end (); ++ window_it, ++ i) 
		_tprintf (_T (&quot;%d : %s\n&quot;), i, window_it-&gt;title.c_str ()); 

	// Auswahl des Fensters &amp; Prüfung, ob Auswahl im Gültigskeitsbereich liegt 
	unsigned int choice = 0; 
	do 
	{ 
		cout &lt;&lt; &quot;\nAuf welches Fenster soll aufgeschaltet werden: \n&quot;; 
		cin &gt;&gt; choice; 

	} while (choice &lt; 0 || choice &gt;= windows.size ()); 

	// ausgewählte Fensterhandle zurckgeben 
	return (windows[choice].handle); 
} 

int main() {

	myWindowHandler = select_window();
	// Fenster in Originalgröße anzeigen
	ShowWindow(myWindowHandler, SW_RESTORE);
	// Fenster in den Vordergrund holenc
	SetForegroundWindow(myWindowHandler);
	// Tastaturfokus auf Fenster setzen
	SetFocus(myWindowHandler);

	myDisplayCanvas = GetDC(myWindowHandler);

	while (true)
	{

		COLORREF color = GetPixel(myDisplayCanvas ,120,120);
		cout &lt;&lt; color &lt;&lt; &quot;\n&quot;;

	}

	return 0;
}
</code></pre>
<p>Getestet habe ich dies mit verschiedenen Programmen. (z.B Editor, Paint etc.)</p>
<p>Das Fenster Rückt wie gewünscht in den Vordergrund und erhält den Focus.<br />
Aber als Farbe erhalte ich IMMER nur 16777215.</p>
<p>Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229038/probleme-mit-getpixel</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 07:21:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229038.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Dec 2008 15:28:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit GetPixel on Sat, 06 Dec 2008 15:28:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich möchte einen Pixel aus einem fremden Fenster auslesen und habe mir folgendes zusammengebastelt:</p>
<pre><code class="language-cpp">#include &lt;Windows.h&gt; 
#include &lt;Tchar.h&gt; 
#include &lt;vector&gt; 
#include &lt;Iostream&gt;
#include &lt;winuser.h&gt; 
#include &lt;winable.h&gt; 

using namespace std;
HDC myDisplayCanvas;

HWND myWindowHandler;

struct Window 
{ 
	basic_string&lt;TCHAR&gt; title; 
	HWND handle; 
}; 

vector&lt;Window&gt; windows; 

// Callback fr EnumWindows. Wird aufgerufen fr jedes Fenster 
BOOL CALLBACK EnumWindowsProc (::HWND hwnd, ::LPARAM lParam) 
{ 
	// Kein Fenster 
	if (!IsWindow (hwnd)) 
		return (TRUE); 

	// nur sichtbare Fenster auflisten 
	if (!IsWindowVisible (hwnd)) 
		return (TRUE); 

	// Fensterberschrift ermitteln 
	TCHAR title[256]; 
	if (!GetWindowText (hwnd, title, sizeof (title) / sizeof (title[0]))) 
		return (TRUE); 

	// neues Fenster hinzufgen... 
	Window wnd; 
	wnd.handle      = hwnd; 
	wnd.title       = title; 
	windows.push_back (wnd); 

	return (TRUE);
}

// Listet Fenster auf und regelt Auswahl eines Fensters 
HWND select_window (void) 
{ 
	// Alle Fenster auflisten 
	EnumWindows (EnumWindowsProc, 0); 

	// Liste aller Fenster ausgeben. 
	vector&lt;Window&gt;::iterator window_it = windows.begin (); 
	for (int i = 0; window_it != windows.end (); ++ window_it, ++ i) 
		_tprintf (_T (&quot;%d : %s\n&quot;), i, window_it-&gt;title.c_str ()); 

	// Auswahl des Fensters &amp; Prüfung, ob Auswahl im Gültigskeitsbereich liegt 
	unsigned int choice = 0; 
	do 
	{ 
		cout &lt;&lt; &quot;\nAuf welches Fenster soll aufgeschaltet werden: \n&quot;; 
		cin &gt;&gt; choice; 

	} while (choice &lt; 0 || choice &gt;= windows.size ()); 

	// ausgewählte Fensterhandle zurckgeben 
	return (windows[choice].handle); 
} 

int main() {

	myWindowHandler = select_window();
	// Fenster in Originalgröße anzeigen
	ShowWindow(myWindowHandler, SW_RESTORE);
	// Fenster in den Vordergrund holenc
	SetForegroundWindow(myWindowHandler);
	// Tastaturfokus auf Fenster setzen
	SetFocus(myWindowHandler);

	myDisplayCanvas = GetDC(myWindowHandler);

	while (true)
	{

		COLORREF color = GetPixel(myDisplayCanvas ,120,120);
		cout &lt;&lt; color &lt;&lt; &quot;\n&quot;;

	}

	return 0;
}
</code></pre>
<p>Getestet habe ich dies mit verschiedenen Programmen. (z.B Editor, Paint etc.)</p>
<p>Das Fenster Rückt wie gewünscht in den Vordergrund und erhält den Focus.<br />
Aber als Farbe erhalte ich IMMER nur 16777215.</p>
<p>Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1626184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626184</guid><dc:creator><![CDATA[Andreas XXL]]></dc:creator><pubDate>Sat, 06 Dec 2008 15:28:57 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit GetPixel on Sat, 06 Dec 2008 17:27:41 GMT]]></title><description><![CDATA[<p>kannst ja mal kucken ob der zurückgegebene wert von GetPixel() == CLR_INVALID<br />
ist. wenn dem so ist, schreibt die MSDN dazu.</p>
<blockquote>
<p>The return value is the RGB value of the pixel. <strong>If the pixel is outside of the current clipping region</strong>, the return value is CLR_INVALID.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1626213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626213</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Sat, 06 Dec 2008 17:27:41 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit GetPixel on Sat, 06 Dec 2008 17:38:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>passen die Koordinaten auch zu diesem Fenster?<br />
ClientToScreen oder ScreenToClient mappen die Koordinaten entsprechend <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1626219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626219</guid><dc:creator><![CDATA[CStern]]></dc:creator><pubDate>Sat, 06 Dec 2008 17:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit GetPixel on Sat, 06 Dec 2008 17:50:26 GMT]]></title><description><![CDATA[<p>Schau doch mal einfach in der MSDN nach, dann siehst du das COLORREF ein Hexwert<br />
ist, den du noch in RGB zerlegen musst.</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ms532655(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms532655(VS.85).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1626226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626226</guid><dc:creator><![CDATA[Superior]]></dc:creator><pubDate>Sat, 06 Dec 2008 17:50:26 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit GetPixel on Sat, 06 Dec 2008 22:02:06 GMT]]></title><description><![CDATA[<p>Also wenn ich</p>
<pre><code class="language-cpp">myDisplayCanvas = GetDC(0);
</code></pre>
<p>verwende dann gehts <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<blockquote>
<p>Hallo,</p>
<p>passen die Koordinaten auch zu diesem Fenster?<br />
ClientToScreen oder ScreenToClient mappen die Koordinaten entsprechend</p>
</blockquote>
<p>Das habe ich noch nicht getestet, aber es funktioniert ja auch bei Fenster die Vollbild sind nicht. (Nur mit der oben angegeben Methode, die den Desktop aufnimmt (und somit jedes fenster)). Es funktioniert mit GetDC(0); sogar bei Direct-X Spielen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Hat sonst noch Jemand eine Idee warum meine auf Fenster bezogene selektive Version nicht funktioniet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1626314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626314</guid><dc:creator><![CDATA[Andreas XXL]]></dc:creator><pubDate>Sat, 06 Dec 2008 22:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit GetPixel on Mon, 08 Dec 2008 10:09:06 GMT]]></title><description><![CDATA[<p>16777215 ist Weiss. CLR_INVALID hat einen anderen Wert (vermutlich 0xFFFFFFFF).<br />
Bist du sicher dass die Farbe dort nicht einfach immer Weiss ist?<br />
Hast du versucht mal die Werte von &quot;myDisplayCanvas&quot; und &quot;myWindowHandler&quot; auszugeben?</p>
<p>BTW: es ist ein Window-Handle (ohne R hinten, &quot;Handler&quot; bedeutet was ganz anderes), und DC heisst &quot;Device Context&quot; nicht &quot;Display Canvas&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1626852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626852</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 08 Dec 2008 10:09:06 GMT</pubDate></item></channel></rss>