<?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[Zwei Probleme mit BOOL CALLBACK]]></title><description><![CDATA[<p>Hallo,<br />
ich arbeite gerade an einem &quot;Überwachungssystem&quot; für meinen eigenen PC. Es soll die Mausbewegungen aufzeichnen und in Cursorpos.txt speichern (schon fertig), und eine Bemerkung machen wenn ein neues Fenster geöffnet wird(hier liegt mein Problem). Im vor raus: Ich weis das es die CPU auslastung ziemlich in die höhe treibt, aber das Programm soll sowieso nur laufen wenn ich nicht da bin. Also der Code sieht bis jetzt so aus:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt; 
#include &lt;stdlib.h&gt; 
#include &lt;iostream&gt; 
#include &lt;fstream&gt;
#include &lt;vector&gt;
using namespace std; 

BOOL CALLBACK myEnum(HWND h, LPARAM lp) { 
    if (IsWindowVisible(h)) { 
        char buf[256]; 
        GetWindowText(h,buf,256); 
        cout&lt;&lt;buf&lt;&lt;&quot;\n&quot;; 
    } 
    return true; 
} 

int fu();
ofstream Cursorpos(&quot;C:\\Users\\...\\Desktop\\Überwachungsbericht.txt&quot;);
POINT SavePos;
POINT mPos; 
int main() 
{

 fu();
} 

int fu()
{
time_t Zeitstempel;
    tm *nun;
    Zeitstempel = time(0);
    nun = localtime(&amp;Zeitstempel);
    GetCursorPos(&amp;mPos);
    GetCursorPos(&amp;SavePos);
while(1)
  {    
       if (SavePos.x == mPos.x &amp;&amp; SavePos.y == mPos.y)
       { 
       GetCursorPos(&amp;SavePos);
       Sleep(5);
       }
       else
       { 
           system(&quot;CLS&quot;); 
           cout &lt;&lt; &quot;Maus bewegt!&quot; &lt;&lt; endl;
           cout &lt;&lt; &quot;----------Offene Fenster----------&quot; &lt;&lt; endl;
           EnumWindows(&amp;myEnum,0); 
           cout &lt;&lt; &quot;----------Offene Fenster----------&quot; &lt;&lt; endl;
           cout &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
           Cursorpos &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
           fu(); 
       }

    }
}
</code></pre>
<p>Das erste Problem ist, das ich im BOOL CALLBACK myEnum nicht</p>
<pre><code class="language-cpp">Cursorpos &lt;&lt; buf &lt;&lt; endl;
</code></pre>
<p>machen kann.<br />
Dann habe ich es mit strncpy versucht:<br />
Ich habe global einen char erstellt (char buf2[256]) und habe dann in BOOL CALLBACK myEnum geschrieben:</p>
<pre><code class="language-cpp">strncpy (buf2, buf, sizeof(buf2)-1);
</code></pre>
<p>Das hat aber leider auch nicht funktioniert..<br />
Wie kann ich das jetzt zum laufen bringen?<br />
MFG</p>
<p>PS: Ich weis das die ganze TXT Datei mit den Fensterangaben zugespammt wird, aber es geht ja hier nur um den Grundsatz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/279774/zwei-probleme-mit-bool-callback</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 10:09:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/279774.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Jan 2011 15:31:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zwei Probleme mit BOOL CALLBACK on Mon, 03 Jan 2011 15:31:19 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich arbeite gerade an einem &quot;Überwachungssystem&quot; für meinen eigenen PC. Es soll die Mausbewegungen aufzeichnen und in Cursorpos.txt speichern (schon fertig), und eine Bemerkung machen wenn ein neues Fenster geöffnet wird(hier liegt mein Problem). Im vor raus: Ich weis das es die CPU auslastung ziemlich in die höhe treibt, aber das Programm soll sowieso nur laufen wenn ich nicht da bin. Also der Code sieht bis jetzt so aus:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt; 
#include &lt;stdlib.h&gt; 
#include &lt;iostream&gt; 
#include &lt;fstream&gt;
#include &lt;vector&gt;
using namespace std; 

BOOL CALLBACK myEnum(HWND h, LPARAM lp) { 
    if (IsWindowVisible(h)) { 
        char buf[256]; 
        GetWindowText(h,buf,256); 
        cout&lt;&lt;buf&lt;&lt;&quot;\n&quot;; 
    } 
    return true; 
} 

int fu();
ofstream Cursorpos(&quot;C:\\Users\\...\\Desktop\\Überwachungsbericht.txt&quot;);
POINT SavePos;
POINT mPos; 
int main() 
{

 fu();
} 

int fu()
{
time_t Zeitstempel;
    tm *nun;
    Zeitstempel = time(0);
    nun = localtime(&amp;Zeitstempel);
    GetCursorPos(&amp;mPos);
    GetCursorPos(&amp;SavePos);
while(1)
  {    
       if (SavePos.x == mPos.x &amp;&amp; SavePos.y == mPos.y)
       { 
       GetCursorPos(&amp;SavePos);
       Sleep(5);
       }
       else
       { 
           system(&quot;CLS&quot;); 
           cout &lt;&lt; &quot;Maus bewegt!&quot; &lt;&lt; endl;
           cout &lt;&lt; &quot;----------Offene Fenster----------&quot; &lt;&lt; endl;
           EnumWindows(&amp;myEnum,0); 
           cout &lt;&lt; &quot;----------Offene Fenster----------&quot; &lt;&lt; endl;
           cout &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
           Cursorpos &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
           fu(); 
       }

    }
}
</code></pre>
<p>Das erste Problem ist, das ich im BOOL CALLBACK myEnum nicht</p>
<pre><code class="language-cpp">Cursorpos &lt;&lt; buf &lt;&lt; endl;
</code></pre>
<p>machen kann.<br />
Dann habe ich es mit strncpy versucht:<br />
Ich habe global einen char erstellt (char buf2[256]) und habe dann in BOOL CALLBACK myEnum geschrieben:</p>
<pre><code class="language-cpp">strncpy (buf2, buf, sizeof(buf2)-1);
</code></pre>
<p>Das hat aber leider auch nicht funktioniert..<br />
Wie kann ich das jetzt zum laufen bringen?<br />
MFG</p>
<p>PS: Ich weis das die ganze TXT Datei mit den Fensterangaben zugespammt wird, aber es geht ja hier nur um den Grundsatz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001806</guid><dc:creator><![CDATA[Killur]]></dc:creator><pubDate>Mon, 03 Jan 2011 15:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Probleme mit BOOL CALLBACK on Mon, 03 Jan 2011 15:42:33 GMT]]></title><description><![CDATA[<p>Killur schrieb:</p>
<blockquote>
<p>Das erste Problem ist, das ich im BOOL CALLBACK myEnum nicht</p>
<pre><code class="language-cpp">Cursorpos &lt;&lt; buf &lt;&lt; endl;
</code></pre>
<p>machen kann.</p>
</blockquote>
<p>Warum soll das nicht gehen? Cursorpos musst du so natürlich vor myEnum deklarieren. Eleganter ist es aber keine Globalen zu haben und Cursorpos als Zeiger über den 2. Parameter von EnumWindows an myEnum durchzureichen. Wenn dabei ein zweiter Thread genutzt wird, musst du Cursorpos aber sichern.</p>
<p>Killur schrieb:</p>
<blockquote>
<p>PS: Ich weis das die ganze TXT Datei mit den Fensterangaben zugespammt wird, aber es geht ja hier nur um den Grundsatz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Ich würde es übrigens alles andere als toll finden, wenn du meine Aktivitäten am Computer aufzeichnest. Probiere es lieber mal mit einem Passwort, dass ist wesentlich weniger Aufwand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001817</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Mon, 03 Jan 2011 15:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Probleme mit BOOL CALLBACK on Mon, 03 Jan 2011 15:44:31 GMT]]></title><description><![CDATA[<p>Meine Glaskugel ist in der Reparatur...</p>
<p>Wie lautet denn die Fehlermeldung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001821</guid><dc:creator><![CDATA[Tobias Gerg]]></dc:creator><pubDate>Mon, 03 Jan 2011 15:44:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Probleme mit BOOL CALLBACK on Mon, 03 Jan 2011 15:50:37 GMT]]></title><description><![CDATA[<p>Deine Variable Cursorpos ist deiner Funktion unbekannt. Lösung: Cursorpos vor myEnum schreiben oder Vorwärtsdeklaration verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001827</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Mon, 03 Jan 2011 15:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Probleme mit BOOL CALLBACK on Mon, 03 Jan 2011 16:08:55 GMT]]></title><description><![CDATA[<p>Ich hab das mal für dich etwas korrigiert. Ob es so korrekt ist weiß ich nicht, ich habs nicht getestet. Die CPU-Last sollte jetzt aber auch deutlich runter gehen.</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
//#include &lt;vector&gt;
using namespace std;

BOOL CALLBACK myEnum(HWND h, LPARAM lp)
{
    if (IsWindowVisible(h))
    {
	char buf[256];
	GetWindowText(h, buf, sizeof buf);
	*reinterpret_cast&lt;std::ofstream*&gt;(lp) &lt;&lt; buf &lt;&lt; &quot;\n&quot;;
    }
    return TRUE;
}

int main()
{
    ofstream Cursorpos(&quot;C:\\Users\\...\\Desktop\\Überwachungsbericht.txt&quot;);
    POINT SavePos;
    POINT mPos;

    time_t Zeitstempel;
    tm *nun;
    Zeitstempel = time(0);
    nun = localtime(&amp;Zeitstempel);
    GetCursorPos(&amp;mPos);
    GetCursorPos(&amp;SavePos);
    while(1)
    {
	if (SavePos.x == mPos.x &amp;&amp; SavePos.y == mPos.y)
	{
	    GetCursorPos(&amp;SavePos);
	}
	else
	{
	    system(&quot;CLS&quot;);
	    cout &lt;&lt; &quot;Maus bewegt!&quot; &lt;&lt; endl;
	    cout &lt;&lt; &quot;----------Offene Fenster----------&quot; &lt;&lt; endl;
	    EnumWindows(&amp;myEnum, reinterpret_cast&lt;LPARAM&gt;(&amp;Cursorpos));
	    cout &lt;&lt; &quot;----------Offene Fenster----------&quot; &lt;&lt; endl;
	    cout &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
	    Cursorpos &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
	}
	Sleep(100);
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2001846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001846</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Mon, 03 Jan 2011 16:08:55 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Probleme mit BOOL CALLBACK on Mon, 03 Jan 2011 16:25:36 GMT]]></title><description><![CDATA[<p>Danke Euch für Eure antworten! Das Programm läuft jetzt wenn auch nicht korrekt. <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/903">@Paul</a>: Bei Zeit werde ich diesen Code auch mal testen!</p>
<p>Ich habe nun eine weitere Frage:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt; 
#include &lt;stdlib.h&gt; 
#include &lt;iostream&gt; 
#include &lt;fstream&gt;
#include &lt;vector&gt;
using namespace std; 
ofstream Cursorpos(&quot;C:\\Users\\...\\Desktop\\Überwachungsbericht.txt&quot;);
char buf2[256];
char buf3[256];
BOOL CALLBACK myEnum(HWND h, LPARAM lp) { 
    if (IsWindowVisible(h)) { 
        char buf[256]; 
        GetWindowText(h,buf,256); 
        strncpy(buf2, buf, sizeof(buf2)-1);
        buf2[sizeof(buf2)]= '\0';
        strncpy(buf3, buf, sizeof(buf3)-1);
        buf3[sizeof(buf3)]= '\0';
    } 
    return true; 
} 

BOOL CALLBACK myEnum2(HWND h, LPARAM lp) { 
    if (IsWindowVisible(h)) { 
        char buf[256]; 
        GetWindowText(h,buf,256); 
        strncpy(buf2, buf, sizeof(buf2)-1);
        buf2[sizeof(buf2)]= '\0';
    } 
    return true; 
} 
int i=1;

int fu();

POINT SavePos;
POINT mPos; 
int main() 
{
            EnumWindows(&amp;myEnum,0);   
 fu();
} 

int fu()
{
                EnumWindows(&amp;myEnum2,0); 
time_t Zeitstempel;
    tm *nun;
    Zeitstempel = time(0);
    nun = localtime(&amp;Zeitstempel);
    GetCursorPos(&amp;mPos);
    GetCursorPos(&amp;SavePos);
while(1)
  {    
       if (SavePos.x == mPos.x &amp;&amp; SavePos.y == mPos.y)
       { 
       GetCursorPos(&amp;SavePos);
       Sleep(5);
       }
       else if (buf2 == buf3 &amp;&amp; SavePos.x != mPos.x &amp;&amp; SavePos.y != mPos.y)
       {
           system(&quot;CLS&quot;); 
           cout &lt;&lt; &quot;Maus bewegt!&quot; &lt;&lt; endl;
           cout &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
           Cursorpos &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
           fu();
        }
           else if (buf2 != buf3 &amp;&amp; SavePos.x != mPos.x &amp;&amp; SavePos.y != mPos.y)
           {
                system(&quot;CLS&quot;); 
                cout &lt;&lt; &quot;Maus bewegt!&quot; &lt;&lt; endl;
                cout &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
                Cursorpos &lt;&lt; nun-&gt;tm_hour &lt;&lt; &quot;:&quot; &lt;&lt; nun-&gt;tm_min &lt;&lt; &quot; &quot; &lt;&lt; &quot;X:&quot; &lt;&lt;   mPos.x &lt;&lt; &quot; - Y:&quot; &lt;&lt; mPos.y &lt;&lt; endl;
                Cursorpos &lt;&lt; buf2 &lt;&lt; endl;
                EnumWindows(&amp;myEnum,0); 
                fu();
            }
            else 
            {
                fu();
            }
                            }
                }
</code></pre>
<p>Der Sinn soll sein, das er checkt ob die Maus bewegt wurde und ob ein neues Femster offen ist.. (Damit nicht die ganze.txt Datei voll mit den Angaben der offenen Fenster ist.) Nur leider wird es nicht aufgezeichnet wenn ich ein neues Fenster öfffne... Wo liegt hier der Fehler?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001858</guid><dc:creator><![CDATA[Killur]]></dc:creator><pubDate>Mon, 03 Jan 2011 16:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Probleme mit BOOL CALLBACK on Mon, 03 Jan 2011 16:46:47 GMT]]></title><description><![CDATA[<p>Du solltest dir meine Änderungen lieber doch mal ansehen. Du rufst in deinem Programm unendlich mal fu in sich selber auf. Und jedes fu ist eine Endlosschleife. Wozu? Dass dadurch deine CPU-Last immer größer wird, wundert mich überhaupt nicht. Eher dass das Programm nicht abstürzt, weil irgendwann die Ressourcen erschöpft sind. Auch ist das Sleep nach GetCursorPos völlig unsinnig. Das gehört allgemein in die Endlosschleife und nicht einfach irgendwohin. Ich hab so den Eindruck, du weißt gar nicht was du machst, sondern probierst solange rum, bis irgendwann so in etwa das gewünschte Ergebnis raus kommt.<br />
Du denkst dir wahrscheinlich jetzt mein Gott der Typ kann nur meckern. Wenn du aber ein wenig Struktur und Sinn in deinen Quelltext bringst, dann erübrigen sich deine Fragen wohl von selbst. So ist das ganze nur ein undurchschaubares heilloses durcheinander, wo kein Mensch weiß, was es tut, warum es das tut und was es eigentlich tun sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2001878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2001878</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Mon, 03 Jan 2011 16:46:47 GMT</pubDate></item></channel></rss>