<?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[Tastendruck an Programm senden funktioniert nicht - alternative zu keybd_event?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Mit folgender funktion mochte ich gerne ein Tetris, das in Java programmiert ist, steuern. Es bewegt sich leider nichts. Das Richtige Fenster wird jedoch gefunden. Das Fenster ist ein FullScreen.</p>
<pre><code class="language-cpp">void __fastcall TMain::DoMove(int Movement, int Rotation)
{
        HWND hwnd = FindWindow(NULL, &quot;Tetris&quot;);
        if(hwnd)
        {

                SetForegroundWindow(hwnd);

                if (Movement &gt; 0)
                {
                        for (int i = 0; i &lt; Movement; i++)
                        {
                                keybd_event(VK_RIGHT, 0x27, KEYEVENTF_EXTENDEDKEY | 0, 0);
                                keybd_event(VK_RIGHT, 0x27, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                        }
                }
                else
                {
                        for (int i = 0; i &lt; -Movement; i++)
                        {
                                keybd_event(VK_LEFT, 0x25, KEYEVENTF_EXTENDEDKEY | 0, 0);
                                keybd_event(VK_LEFT, 0x25, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                        }
                }

                for (int i = 0; i &lt; Rotation; i++)
                {
                        keybd_event(VK_UP, 0x26, KEYEVENTF_EXTENDEDKEY | 0, 0);
                        keybd_event(VK_UP, 0x26, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                }
        keybd_event(VK_SPACE, 0x20, KEYEVENTF_EXTENDEDKEY | 0, 0);
        keybd_event(VK_SPACE, 0x20, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
        }

}
</code></pre>
<p>Über eine Idee oder ein Vorschlag wie man dieses Problem lösen kann, vielleicht auch &quot;Hardwaremässig eingreifen&quot; da ich das Spiel immer steuern kann, freue ich mich.</p>
<p>Grüsse</p>
<p>Wild</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170802/tastendruck-an-programm-senden-funktioniert-nicht-alternative-zu-keybd_event</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 03:44:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170802.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Jan 2007 17:01:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tastendruck an Programm senden funktioniert nicht - alternative zu keybd_event? on Fri, 19 Jan 2007 17:01:00 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Mit folgender funktion mochte ich gerne ein Tetris, das in Java programmiert ist, steuern. Es bewegt sich leider nichts. Das Richtige Fenster wird jedoch gefunden. Das Fenster ist ein FullScreen.</p>
<pre><code class="language-cpp">void __fastcall TMain::DoMove(int Movement, int Rotation)
{
        HWND hwnd = FindWindow(NULL, &quot;Tetris&quot;);
        if(hwnd)
        {

                SetForegroundWindow(hwnd);

                if (Movement &gt; 0)
                {
                        for (int i = 0; i &lt; Movement; i++)
                        {
                                keybd_event(VK_RIGHT, 0x27, KEYEVENTF_EXTENDEDKEY | 0, 0);
                                keybd_event(VK_RIGHT, 0x27, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                        }
                }
                else
                {
                        for (int i = 0; i &lt; -Movement; i++)
                        {
                                keybd_event(VK_LEFT, 0x25, KEYEVENTF_EXTENDEDKEY | 0, 0);
                                keybd_event(VK_LEFT, 0x25, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                        }
                }

                for (int i = 0; i &lt; Rotation; i++)
                {
                        keybd_event(VK_UP, 0x26, KEYEVENTF_EXTENDEDKEY | 0, 0);
                        keybd_event(VK_UP, 0x26, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                }
        keybd_event(VK_SPACE, 0x20, KEYEVENTF_EXTENDEDKEY | 0, 0);
        keybd_event(VK_SPACE, 0x20, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
        }

}
</code></pre>
<p>Über eine Idee oder ein Vorschlag wie man dieses Problem lösen kann, vielleicht auch &quot;Hardwaremässig eingreifen&quot; da ich das Spiel immer steuern kann, freue ich mich.</p>
<p>Grüsse</p>
<p>Wild</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212801</guid><dc:creator><![CDATA[Wilder]]></dc:creator><pubDate>Fri, 19 Jan 2007 17:01:00 GMT</pubDate></item></channel></rss>