<?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[Fremde Anwendung steuern]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich möchte ein fremde Anwendung steuern. Ich habe es PostMessage versucht. Mir gelingt es aber nicht zwischen den Tabs hin und her zu springen. Dies funktioniert nicht:<br />
PostMessage(hwnd, WM_KEYDOWN, VK_DOWN, 0);</p>
<p>Wie muß ich es stattdessen machen?</p>
<p>Vielen Dank</p>
<p>Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175820/fremde-anwendung-steuern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 04:43:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175820.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Mar 2007 13:03:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 13:03:53 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich möchte ein fremde Anwendung steuern. Ich habe es PostMessage versucht. Mir gelingt es aber nicht zwischen den Tabs hin und her zu springen. Dies funktioniert nicht:<br />
PostMessage(hwnd, WM_KEYDOWN, VK_DOWN, 0);</p>
<p>Wie muß ich es stattdessen machen?</p>
<p>Vielen Dank</p>
<p>Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245395</guid><dc:creator><![CDATA[peterf_x]]></dc:creator><pubDate>Wed, 14 Mar 2007 13:03:53 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 13:39:56 GMT]]></title><description><![CDATA[<p>Für soche Themen gibt es bestimmt schon viel BSP Source im Inet. Wie würdet Ihr &quot;fremde anwendung steuern&quot; übersetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245437</guid><dc:creator><![CDATA[peterf_x]]></dc:creator><pubDate>Wed, 14 Mar 2007 13:39:56 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 13:45:34 GMT]]></title><description><![CDATA[<p>wenn es denn so funktionieren würde müsstest du dir schon ein handle auf die entsprechende anwendung holen aber ich mach dir nciht viel hoffung das es so klappt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245443</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Wed, 14 Mar 2007 13:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 14:28:34 GMT]]></title><description><![CDATA[<p>Den Handle habe ich schon:</p>
<pre><code>Private Sub Command1_Click()
    Dim hwnd As Long

    hwnd = ShellTohWnd(App.Path &amp; &quot;\MyTool.exe&quot;, vbNormalNoFocus)  ' vbHide) 
    Call PostMessage(hwnd, WM_KEYDOWN, VK_RETURN, 0) ' Funktioniert
    Call PostMessage(hwnd, WM_KEYDOWN, VK_DOWN, 0) ' Funktioniert NICHT
    Call PostMessage(hwnd, WM_KEYDOWN, VK_SPACE, 0) ' Funktioniert NICHT
End Sub

Private Function ShellTohWnd(ByVal hhwPfad As String, Optional Mode As VbAppWinStyle)
    Dim ProcHWND As Long, ProcHWN As Long

    ProcHWND = Shell(hhwPfad, Mode)

    Retval = FindWindow(vbNullString, vbNullString)
    Do While Retval &lt;&gt; 0
        If GetParent(Retval) = 0 Then
            Call GetWindowThreadProcessId(Retval, ProcHWN)

            If ProcHWN = ProcHWND Then
                ShellTohWnd = Retval
                Exit Do
            End If
        End If

        Retval = GetWindow(Retval, GW_HWNDNEXT)
    Loop
End Function
</code></pre>
<p>Ich kann die Anwendung versteckt starten und jeweils ENTER an das Fenster senden. Sende ich aber einen VK_TAB (oder VK_DOWN) wird nicht zum nächsten Control gesprungen. Das liegt vermutlich daran das die fremde Applikation nicht den Fokus hat. Ich müsste also direkt zu einem bestimmten Control im Fenster springen. Wie macht man das?</p>
<p>Wenn auf einem Fenster 10 Textboxen sind, wie werden die dann unterschieden? Durch den WindowHandle. Der ist doch aber jedes mal anders. Ich muß also nach einem anderem Kriterium die &quot;richtige&quot; Textbox auswählen und dann anhand dessen den hWnd in Erfahrung bringen. Welches wäre das Kriterium?</p>
<p>Vielen Dank</p>
<p>Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245485</guid><dc:creator><![CDATA[peterfarge]]></dc:creator><pubDate>Wed, 14 Mar 2007 14:28:34 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 16:00:14 GMT]]></title><description><![CDATA[<p>Ähm Dir ist aber schon klar, dass das ein C++ und kein VB-Forum ist, nech <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>
<p>Vllt hilft Dir aber <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/UserInput/KeyboardInput/KeyboardInputReference/KeyboardInputFunctions/SetFocus.asp" rel="nofollow">SetFocus</a> ?!</p>
<p>PS: Vllt ist das noch interessant: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-165868.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-165868.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245570</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 14 Mar 2007 16:00:14 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 16:00:17 GMT]]></title><description><![CDATA[<p>Ehhhmm das is irgendwie VB und nicht C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245571</guid><dc:creator><![CDATA[Pacino90]]></dc:creator><pubDate>Wed, 14 Mar 2007 16:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 16:22:41 GMT]]></title><description><![CDATA[<p>Achja: An die Handle der Child-Window kommst Du entweder mit EnumChildWindows oder mit FindWindowEx <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/1245606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245606</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 14 Mar 2007 16:22:41 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 16:34:51 GMT]]></title><description><![CDATA[<p>Laut dem Text geht der Tip aus der Ansi FAQ nicht, weil das Fenster nicht den Fokus hat. Kann ich einem verstecktem nicht sichtbarem Fenster den Fokus geben? Ich glaube eher nicht. Es würde doch reichen an das Control eine Nachricht zu schicken. Nehmen wir an ich komme über EnumChildWindows an das OptionsControl heran das ich setzen will. Dann müsste ich nur noch eine Message SETZEN senden. So sollte es gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245613</guid><dc:creator><![CDATA[peterfarge]]></dc:creator><pubDate>Wed, 14 Mar 2007 16:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Wed, 14 Mar 2007 17:47:04 GMT]]></title><description><![CDATA[<p>peterfarge schrieb:</p>
<blockquote>
<p>Wenn auf einem Fenster 10 Textboxen sind, wie werden die dann unterschieden? Durch den WindowHandle...</p>
</blockquote>
<p>... und durch eine ID, falls der Programmierer von &quot;MyTool.exe&quot; welche vergeben hat. Mit &quot;GetDlgCtrlID ()&quot; lässt sie sich ermitteln.<br />
Die ID's sind, sofern vergeben, bei jedem Start von &quot;MyTool.exe&quot; gleich.<br />
Wenn Du die ID's einmal ermittelt hast, kannst Du sie in Deinem Steuerungsprogramm direkt verwenden, z.B. via &quot;SendDlgItemMessage ()&quot;.<br />
( -&gt; wobei mit &quot;handle of dialog box&quot; immer das Handle vom Parent des Controls gemeint ist &lt;-)<br />
Allerdings kann sich der Programmierer auch einen Scherz erlaubt haben und hat nicht ein-eindeutige ID's vergeben. Dann bleibt nur das &quot;WindowHandle&quot;.</p>
<p>peterfarge schrieb:</p>
<blockquote>
<p>Es würde doch reichen an das Control eine Nachricht zu schicken.</p>
</blockquote>
<p>Das reicht auch. Der Fokus ist nur für das Betriebssystem interessant, damit es weiss, an wen es z.B. direkte Keyboardeingaben senden soll.<br />
Eine Anwendung kann jederzeit, d.h. unabhängig vom Fokus Botschaften empfangen und verarbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245668</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 14 Mar 2007 17:47:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Thu, 15 Mar 2007 10:52:36 GMT]]></title><description><![CDATA[<p>Hallo Merker,</p>
<p>vielen Dank für Bestätigung. <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="🙂"
    /><br />
So kann ich mit der Gewissheit loslegen das es funktionieren wird.</p>
<p>Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245958</guid><dc:creator><![CDATA[peterfarge_X]]></dc:creator><pubDate>Thu, 15 Mar 2007 10:52:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Thu, 15 Mar 2007 14:49:28 GMT]]></title><description><![CDATA[<p>peterfarge schrieb:</p>
<blockquote>
<p>Dann müsste ich nur noch eine Message SETZEN senden. So sollte es gehen?</p>
</blockquote>
<p>Jupp, sozusagen, dachte erst es ging um Tastatureingaben, Du willst Befehle senden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> .</p>
<p>merker schrieb:</p>
<blockquote>
<p>Allerdings kann sich der Programmierer auch einen Scherz erlaubt haben und hat nicht ein-eindeutige ID's vergeben. Dann bleibt nur das &quot;WindowHandle&quot;.</p>
</blockquote>
<p>lol, Wieso ein Scherz ?! Vllt. hat er sie auch einfach nicht gesetzt, weil er sie nicht brauchte. Außerdem ist die ID eigentlich nicht notwendig (wenn nicht sogar überflüssig), denn nimm einfach SendMessage, da übergibt man den Handle direkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246126</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Thu, 15 Mar 2007 14:49:28 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Thu, 15 Mar 2007 15:09:08 GMT]]></title><description><![CDATA[<p>die id ist notwendig fuer die eigenen messages</p>
<p>switch<br />
command<br />
id</p>
<p>fuer static texte allerdings vergeb ich nie richtige id's - wozu, kann eh keine messages daher empfangen {zb anklicken oder soetwas}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246140</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Thu, 15 Mar 2007 15:09:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fremde Anwendung steuern on Thu, 15 Mar 2007 16:04:50 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>fuer static texte allerdings vergeb ich nie richtige id's - wozu, kann eh keine messages daher empfangen {zb anklicken oder soetwas}</p>
</blockquote>
<p>Jo, genau das meinte ich <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="👍"
    /> . Obwohl, in seltenen Fällen brauchen auch die eine ID, bzw. ist es sinnvoll eine zu vergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246178</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Thu, 15 Mar 2007 16:04:50 GMT</pubDate></item></channel></rss>