<?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[Gibt es sowas wie eine Child-Eigenschaft eines handle ?]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es eine Möglichkeit, bei einem unter Windows geöffneten Fenster zu erkennen, dass es sich bei diesem Fenster um ein &quot;Unterfenster&quot; bzw. einen Dialog einer Hauptanwendung handelt?</p>
<p>Zur Verdeutlichung meiner Frage bzw. meines Problemes:</p>
<p>Ich habe eine Software zur Steuerung von Drittanbietersoftware geschrieben.<br />
Meiner Software kann man Bearbeitungsroutinen und eine Argumentliste geben.<br />
Mit dieser Bearbeitungsroutine (z.B.: drücke die Taste ESC, gebe ein &quot;Erfassung&quot;, drücke ENTER, gebe ein Argument1, drücke TAB, gebe ein Argument2, etc ...) wird dann die bezeichnete Drittanbietersoftware so lange gefüttert, bis die Argumentliste komplett abgearbeitet ist.</p>
<p>Mögliches Anwendungsszenario:<br />
Kunde schickt eine Auftragsliste mit 5.000 Aufträgen im Excelformat, die alle in das eigene System eingegeben werden müssen. Das eigene System unterstützt aber keinen Import, es muss also alles händisch eingegeben werden.<br />
Diese Aufgabe übernimmt dann meine Anwendung.<br />
Die Eingaben laufen alle über SendInput, meine eigene Anwendung läuft im Hintergrund.</p>
<p>Die Software ist schon mehrfach sehr erfolgreich in einem deutschen Großunternehmen gelaufen und hat damit vielen Mitarbeitern viele Stunden stupide Erfassungsarbeit erspart. Dennoch möchte ich sie gerne noch ein wenig weiterentwickeln, man ist ja anspruchsvoll ... <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>
<p>Da während so einer Erfassungsroutine schon so einiges passieren kann, was mein zu fütterndes Zielfenster stören kann (Popups, Programmstart über Taskplaner, Dienste, etc.), wird vor jedem einzelnen Tastendruck geprüft, ob das Zielfenster noch im Vordergrund ist, falls nicht, wird es wieder in den Vordergrund geholt, bevor die nächste SendInput-Anweisung folgt.</p>
<pre><code class="language-cpp">if( (hWnd != GetForegroundWindow()) &amp;&amp; (stop == false))
{
   // prüfen, welches Fenster im Vordergrund ist
   // falls meine Anwendung -&gt; Nachfrage, ob gestoppt werden soll
   // falls anderes Fenster -&gt; Zielfenster in den Vordergrund holen
}
</code></pre>
<p>hWnd = Handle des Zielfenster</p>
<pre><code class="language-cpp">if( (hWnd == GetForegroundWindow()) &amp;&amp; (stop == false) )
{
   // SendInput  ...
}
</code></pre>
<p>Das klappt alles wunderbar und entspricht voll und ganz meinen Vorstellungen.<br />
ABER:<br />
Es lassen sich natürlich auch Tastaturkombinationen vorgeben, wie z.B. Strg + S.<br />
Damit öffnet sich dann der Dialog &quot;Speichern unter ...&quot;</p>
<p>Und das war es dann mit meiner Erfassung.<br />
Meine Anwendung ist nicht im Vordergrund, also würde theoretisch weiter erfasst.<br />
Die Zielanwendung ist aber auch nicht mehr im Vordergrund, läßt sich aber auch nicht in den Vordergrund holen, weil der &quot;Speichern unter ...&quot; Dialog nicht in den Hintergrund verschoben werden kann.</p>
<p>Ich würde daher gerne während meiner Erfassung prüfen, ob es sich beim dem Fenster, dass sich gerade im Vordergrund befindet, um ein Dialogfenster oder Unterfenster der Zielanwendung handelt.<br />
Falls ja, würde ich dann in diesen Unterdialog weiter erfassen.</p>
<p>Das hätte den charmanten Vorteil, dass meine Anwendung das Erfassungsergebnis<br />
in der Zielanwendung abspeichern könnte, indem es mit Strg + S den Speichern-Dialog aufruft, einen Dateinamen eingibt und ENTER drückt.</p>
<p>Und daraus resultiert für mich natürlich jetzt die Frage, kann ich am Handle (oder sonst irgendwo dran) erkennen, dass es sich bei dem Fenster im Vordergrund um ein Dialogfenster oder Unterfenster der Hauptanwendung (Zielanwendung) handelt?</p>
<p>Danke für Eure Ideen und Vorschläge.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232356/gibt-es-sowas-wie-eine-child-eigenschaft-eines-handle</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 11:49:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232356.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Jan 2009 20:12:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gibt es sowas wie eine Child-Eigenschaft eines handle ? on Wed, 21 Jan 2009 20:12:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es eine Möglichkeit, bei einem unter Windows geöffneten Fenster zu erkennen, dass es sich bei diesem Fenster um ein &quot;Unterfenster&quot; bzw. einen Dialog einer Hauptanwendung handelt?</p>
<p>Zur Verdeutlichung meiner Frage bzw. meines Problemes:</p>
<p>Ich habe eine Software zur Steuerung von Drittanbietersoftware geschrieben.<br />
Meiner Software kann man Bearbeitungsroutinen und eine Argumentliste geben.<br />
Mit dieser Bearbeitungsroutine (z.B.: drücke die Taste ESC, gebe ein &quot;Erfassung&quot;, drücke ENTER, gebe ein Argument1, drücke TAB, gebe ein Argument2, etc ...) wird dann die bezeichnete Drittanbietersoftware so lange gefüttert, bis die Argumentliste komplett abgearbeitet ist.</p>
<p>Mögliches Anwendungsszenario:<br />
Kunde schickt eine Auftragsliste mit 5.000 Aufträgen im Excelformat, die alle in das eigene System eingegeben werden müssen. Das eigene System unterstützt aber keinen Import, es muss also alles händisch eingegeben werden.<br />
Diese Aufgabe übernimmt dann meine Anwendung.<br />
Die Eingaben laufen alle über SendInput, meine eigene Anwendung läuft im Hintergrund.</p>
<p>Die Software ist schon mehrfach sehr erfolgreich in einem deutschen Großunternehmen gelaufen und hat damit vielen Mitarbeitern viele Stunden stupide Erfassungsarbeit erspart. Dennoch möchte ich sie gerne noch ein wenig weiterentwickeln, man ist ja anspruchsvoll ... <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>
<p>Da während so einer Erfassungsroutine schon so einiges passieren kann, was mein zu fütterndes Zielfenster stören kann (Popups, Programmstart über Taskplaner, Dienste, etc.), wird vor jedem einzelnen Tastendruck geprüft, ob das Zielfenster noch im Vordergrund ist, falls nicht, wird es wieder in den Vordergrund geholt, bevor die nächste SendInput-Anweisung folgt.</p>
<pre><code class="language-cpp">if( (hWnd != GetForegroundWindow()) &amp;&amp; (stop == false))
{
   // prüfen, welches Fenster im Vordergrund ist
   // falls meine Anwendung -&gt; Nachfrage, ob gestoppt werden soll
   // falls anderes Fenster -&gt; Zielfenster in den Vordergrund holen
}
</code></pre>
<p>hWnd = Handle des Zielfenster</p>
<pre><code class="language-cpp">if( (hWnd == GetForegroundWindow()) &amp;&amp; (stop == false) )
{
   // SendInput  ...
}
</code></pre>
<p>Das klappt alles wunderbar und entspricht voll und ganz meinen Vorstellungen.<br />
ABER:<br />
Es lassen sich natürlich auch Tastaturkombinationen vorgeben, wie z.B. Strg + S.<br />
Damit öffnet sich dann der Dialog &quot;Speichern unter ...&quot;</p>
<p>Und das war es dann mit meiner Erfassung.<br />
Meine Anwendung ist nicht im Vordergrund, also würde theoretisch weiter erfasst.<br />
Die Zielanwendung ist aber auch nicht mehr im Vordergrund, läßt sich aber auch nicht in den Vordergrund holen, weil der &quot;Speichern unter ...&quot; Dialog nicht in den Hintergrund verschoben werden kann.</p>
<p>Ich würde daher gerne während meiner Erfassung prüfen, ob es sich beim dem Fenster, dass sich gerade im Vordergrund befindet, um ein Dialogfenster oder Unterfenster der Zielanwendung handelt.<br />
Falls ja, würde ich dann in diesen Unterdialog weiter erfassen.</p>
<p>Das hätte den charmanten Vorteil, dass meine Anwendung das Erfassungsergebnis<br />
in der Zielanwendung abspeichern könnte, indem es mit Strg + S den Speichern-Dialog aufruft, einen Dateinamen eingibt und ENTER drückt.</p>
<p>Und daraus resultiert für mich natürlich jetzt die Frage, kann ich am Handle (oder sonst irgendwo dran) erkennen, dass es sich bei dem Fenster im Vordergrund um ein Dialogfenster oder Unterfenster der Hauptanwendung (Zielanwendung) handelt?</p>
<p>Danke für Eure Ideen und Vorschläge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649839</guid><dc:creator><![CDATA[W.Stecher]]></dc:creator><pubDate>Wed, 21 Jan 2009 20:12:23 GMT</pubDate></item><item><title><![CDATA[Reply to Gibt es sowas wie eine Child-Eigenschaft eines handle ? on Thu, 22 Jan 2009 07:28:38 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-437.html" rel="nofollow">Jansen</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-2.html" rel="nofollow">VCL (C++ Builder)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649974</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Thu, 22 Jan 2009 07:28:38 GMT</pubDate></item><item><title><![CDATA[Reply to Gibt es sowas wie eine Child-Eigenschaft eines handle ? on Thu, 22 Jan 2009 07:50:24 GMT]]></title><description><![CDATA[<p>GetParent / GetAncestor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1649980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1649980</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 22 Jan 2009 07:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to Gibt es sowas wie eine Child-Eigenschaft eines handle ? on Thu, 22 Jan 2009 10:20:49 GMT]]></title><description><![CDATA[<p>Wenn dur nur das Fensterhandle hast kannst du mit EnumChildWindows über die Kindfenster iterieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650060</guid><dc:creator><![CDATA[_DocShoe_]]></dc:creator><pubDate>Thu, 22 Jan 2009 10:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Gibt es sowas wie eine Child-Eigenschaft eines handle ? on Thu, 22 Jan 2009 12:22:27 GMT]]></title><description><![CDATA[<p>Sorry, für das falsche Einstellen und</p>
<p><strong>vielen lieben Dank</strong> für die schnelle Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1650128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1650128</guid><dc:creator><![CDATA[W.Stecher]]></dc:creator><pubDate>Thu, 22 Jan 2009 12:22:27 GMT</pubDate></item></channel></rss>