<?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[Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich hab mal eine Frage. Es geht um folgendes. Ich möchte mit meinem Programm die Fenster (es können bis zu 20 sein) eines anderen Programmes &quot;kontrollieren&quot;. D.h. wenn ein Fenster des Programmes aktiv wird (es kommt sofort in den Vordergrund und schnappt sich den Focus, egal was man macht), möchte ich dies vorher abfangen und unterbinden.<br />
Ich möchte dadrüber ein System setzen, dass die Fenster nach einem besseren System aktiv setzt, daher brauche ich das.</p>
<p>So ich habe schon gesucht und dazu ein Thread gefunden, wo ein Hook gesetzt wird und ich informiert werde, wenn ein Fenster den Focus bekommt.<br />
Und zwar hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-209856-and-highlight-is-window+hook.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-209856-and-highlight-is-window+hook.html</a></p>
<p>Ist das die richtige herangehensweise? Kann ich dadurch dann auch das Event &quot;schlucken&quot;, damit das betroffene Fenster eben nicht aktiv wird?</p>
<p>Oder gibt es vielleicht bessere Methoden?</p>
<p>Danke für die Unterstützung</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230655/das-quot-aktiv-werden-quot-eines-fensters-verhindern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 22:00:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230655.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Dec 2008 13:59:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern on Tue, 30 Dec 2008 13:59:58 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich hab mal eine Frage. Es geht um folgendes. Ich möchte mit meinem Programm die Fenster (es können bis zu 20 sein) eines anderen Programmes &quot;kontrollieren&quot;. D.h. wenn ein Fenster des Programmes aktiv wird (es kommt sofort in den Vordergrund und schnappt sich den Focus, egal was man macht), möchte ich dies vorher abfangen und unterbinden.<br />
Ich möchte dadrüber ein System setzen, dass die Fenster nach einem besseren System aktiv setzt, daher brauche ich das.</p>
<p>So ich habe schon gesucht und dazu ein Thread gefunden, wo ein Hook gesetzt wird und ich informiert werde, wenn ein Fenster den Focus bekommt.<br />
Und zwar hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-209856-and-highlight-is-window+hook.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-209856-and-highlight-is-window+hook.html</a></p>
<p>Ist das die richtige herangehensweise? Kann ich dadurch dann auch das Event &quot;schlucken&quot;, damit das betroffene Fenster eben nicht aktiv wird?</p>
<p>Oder gibt es vielleicht bessere Methoden?</p>
<p>Danke für die Unterstützung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637271</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Tue, 30 Dec 2008 13:59:58 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern on Tue, 30 Dec 2008 16:37:48 GMT]]></title><description><![CDATA[<p>Im Prinzip müsste das mit einem systemweiten Message-Hook vor der Ausführung gehen, wobei die Fenster-Handles bekannt sein müssen. Dann genügt wahrscheinlich ein ShowWindow(hwndFenster,FALSE). Das Abfangen des Focus erscheint mir zu spät.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637368</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Tue, 30 Dec 2008 16:37:48 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern on Tue, 30 Dec 2008 21:02:20 GMT]]></title><description><![CDATA[<p>Von welcher Aktivierung redest Du? Maus oder Tastatur?</p>
<p>Maus ist einfach<br />
WM_MOUSEACTIVATE<br />
<a href="http://msdn.microsoft.com/en-us/library/ms645612(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms645612(VS.85).aspx</a></p>
<p>Tastatur? Da wäre ein simpler Eingriff in die Messageloop wohl am einfachsten.</p>
<p>Einen Hook halte ich hier für Kanonen auf Spatzen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637489</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 30 Dec 2008 21:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern on Tue, 30 Dec 2008 21:55:40 GMT]]></title><description><![CDATA[<p>Hallo Martin.</p>
<p>Also die Fenster des anderen Programmes kommen aufgrund des Programmes selbst in den Vordergrund. D.h. weder Keyboard oder Maus ist daran beteiligt.</p>
<p>Es geht um ein Pokerprogramm und wenn man mehrere Fenster (=Tische) auf hat und an die Reihe kommt, dann wird das Fenster eben aktiv und kommt in den Vordergrund und erhält vollen Focus.<br />
Ich möchte das nun unterdrücken, damit keine Fenster mehr in den Vordergrund kommen, sondern erst, wenn ich sie &quot;lasse&quot;.</p>
<p>Das bedeutet ich muss irgendwie feststellen, wenn ein Fenster aktiv werden will und es dann auch stoppen können. Und das geht doch dann nur mit einem Hook oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637507</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Tue, 30 Dec 2008 21:55:40 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern on Wed, 31 Dec 2008 00:07:19 GMT]]></title><description><![CDATA[<p>Also ich habe jetzt die Hook Variante probiert und hab ein Problem. Ich hab es soweit hinbekommen, dass mein Hook auf Messages reagiert, die von meinem Programm verursacht werden. Ich habe Probleme damit, den Hook global und nicht nur in meinem Thread, zu registrieren. Aber es klappt einfach nicht.<br />
Hier mal mein Code.</p>
<pre><code class="language-cpp">HINSTANCE hInst = NULL;

extern &quot;C&quot; BOOL APIENTRY DllMain(HINSTANCE _hInst, DWORD reason, LPVOID reserved) {
	switch (reason) {
	case DLL_PROCESS_ATTACH:
		hInst = _hInst;
		break;
	default:
		break;
	}

	return TRUE;
}

LRESULT CALLBACK wProc(int nCode,WPARAM wParam,LPARAM lParam){
    if( nCode &lt; 0 ) {

        return CallNextHookEx( 0, nCode, wParam, lParam );
    }

    if( nCode == HCBT_ACTIVATE ) {
        printf(&quot;Activated: %d\n&quot;, (HWND)wParam);
    }

     return CallNextHookEx( NULL, nCode, wParam, lParam );
}

void MsgLoop() {
	MSG message;

	while (GetMessage(&amp;message, NULL, 0, 0)) {
		TranslateMessage(&amp;message);
		DispatchMessage(&amp;message);
	}
}

JNIEXPORT void JNICALL Java_LowLevelHook_Hook_registerHook(JNIEnv * env, jobject obj) {
//Mit dieser Variante kann ich garkeinen Hook registrieren.    
//    HOOKPROC hookProc = HOOKPROC( GetProcAddress( hInst, &quot;wProc&quot; ) );
//  HHOOK hookHandleWindow = SetWindowsHookEx(WH_CBT, hookProc, hInst, 0 );

//Das hier reagiert nur auf meinen Thread und nicht global
HHOOK hookHandleWindow = SetWindowsHookEx(WH_CBT, wProc, hInst, 0 );

    if (hookHandleWindow == NULL ){
         printf(&quot;C++: Java_Hook_registerHook - WindowHook failed!\n&quot;);
         return;
    }

 MsgLoop();

    if (!UnhookWindowsHookEx(hookHandleWindow)) {
        printf(&quot;C++: Java_Hook_registerHook - Unhook failed\n&quot;);
    } else {
        printf(&quot;C++: Java_Hook_registerHook - Unhook WindowHook successful\n&quot;);
    }

}

JNIEXPORT void JNICALL Java_LowLevelHook_Hook_unRegisterHook(JNIEnv *env, jobject object) {
	if (hookThreadId == 0)
	return;

	printf(&quot;C++: Java_Hook_unRegisterHook - call PostThreadMessage.\n&quot;);
	PostThreadMessage(hookThreadId, WM_QUIT, 0, 0L);
}
</code></pre>
<p>So das ganze funktioniert nur lokal, andere Ereignisse bekomem ich nicht mit.<br />
Was muss ich ändern? Muss ich irgendwas als extern definieren?<br />
Stimmt das handle &quot;hInst&quot; überein mit &quot;LoadLibrary(&quot;meine.dll&quot;)&quot; wenn ich sie extern aufrufen würde?</p>
<p>Wie man sieht rufe ich die DLL aus Java heraus auf ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637565</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Wed, 31 Dec 2008 00:07:19 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern on Wed, 31 Dec 2008 15:47:35 GMT]]></title><description><![CDATA[<p>Nach weiterem gegoogle hab ich eigentlich ein Beispiel gefunden, wo genau mein Problem behoben wird, aber er will immernoch nicht.</p>
<p>Dort wird beschrieben, man soll das Hook Handle so beschreiben:</p>
<pre><code class="language-cpp">#pragma data_seg(&quot;Shared&quot;)

HHOOK hookHandleWindow = NULL;

#pragma data_seg()
#pragma comment(linker, &quot;/section:Shared,rws&quot;)
</code></pre>
<p>dann habe ich noch diese Zeile eingefügt:</p>
<pre><code class="language-cpp">LRESULT CALLBACK wProc(int nCode, WPARAM wParam, LPARAM lParam);
</code></pre>
<p>Aber immernoch das gleiche...</p>
<p>hier wird das beschrieben: <a href="http://www.codeguru.com/cpp/w-p/system/security/article.php/c5761" rel="nofollow">http://www.codeguru.com/cpp/w-p/system/security/article.php/c5761</a></p>
<p>jemand eine Idee was bei mir nicht stimmt?<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/1637787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637787</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Wed, 31 Dec 2008 15:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern on Thu, 01 Jan 2009 19:40:19 GMT]]></title><description><![CDATA[<p>Ok ich hab das Problem erkannt... der Hook sitzt richtig, es stimmt alles nur das &quot;printf&quot; bezieht sich nur auf meine console. Die DLL wird ja von allen anderen offenen Prozessen geladen und demnach schreibt jeder Prozess die Ausgabe is seine eigene Konsole. Habs bemerkt als ich mal alles in eine Datei gelogged hab. Jeder Prozess hatte plötzlich diese Datei erstellt... und seine Zeug dann in seine seperate Datei geschrieben.</p>
<p>jetzt muss ich es nurnoch hinbekommen, dass jeder Prozess dann quasi meine Funktion aufruft...es an meine Konsole weitergibt... schlussendlich soll es so sein, dass jeder Prozess dann eine Funktion in meinem Programm aufrufen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1638071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1638071</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Thu, 01 Jan 2009 19:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to Das &amp;quot;Aktiv werden&amp;quot; eines Fensters verhindern on Sun, 04 Jan 2009 22:33:57 GMT]]></title><description><![CDATA[<p>Hallo...<br />
also das mit dem Hook habe ich alles wunderbar hinbekommen. Leider klappts nicht so.</p>
<p>Ich habs schon mit einem WH_CALLWNDPROC Hook und der Message WM_WINDOWPOSCHANGING versucht, aber mit dem Hook kann man keine Messages verändern...Diese Message habe ich mir über spyxx besorgt...</p>
<p>Ich möchte ja, dass das Fenster, das von allein sich in den Vordergrund mogeln will, verbieten das zu tun <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>
<p>Wie könnt ich noch an die Sache rangehn?<br />
Ich fürchte das Fenster bekommt nicht mal den Keyboard Focus....</p>
<p>noch jemand ne Idee ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639533</guid><dc:creator><![CDATA[Lumpeh]]></dc:creator><pubDate>Sun, 04 Jan 2009 22:33:57 GMT</pubDate></item></channel></rss>