<?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[Probleme mit keybd_event]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab ein Problem mit keybd_event. Ich versuche an ein Spiel strg+v zu senden. Die Daten kriege ich aus einem Editfeld und wird bevor das Paste passiert in die Zwischenablage kopiert - was soweit auch funktioniert. Bevor ich die Daten aus den Editfeldern auslesen, prüfe ich Checkboxen ob sie getickt sind mittels dynamic_cast und dann werden die Felder auch ausgelesen. Das prüfen der getickten Checkboxen und das Kopieren der Editfelder in die Zwischenablage kopieren funktioniert fehlerfrei. Das Problem liegt an dem Senden der Daten an das Spiel. Hierbei gehe ich so vor das ich im Spiel ENTER drücke, dann STRG+V und dann wieder ENTER. (Es handelt sich hierbei um Chatmacros wo ich keine Lust hab diese immer von Hand einzugeben, da diese fehlerhaft in einer Datei gespeichert werden wenn das Spiel beendet und somit eine Neueingabe erfordert und das möchte ich mir eben verkürzen).</p>
<p>Das witzige daran ist, wenn ich im Code ein Sleep einfüge läuft der Schleifenzähler weiter, d.h. wenn ich z.B. 10 Editfelder habe, wird dann innerhalb der Schleife (?) nur jedes 2te genommen (bzw. der Inhalt, sozusagen Editfeld 1,3,5,7,9 und die restlichen werden &quot;ausgelassen&quot; und genau hier liegt mein Problem. Wenn ich es ohne Sleep mach krieg ich eine Fehlermeldung vom Clipboard das nicht geöffnet werden kann. Also musste ich hier schon mal ein Sleep nehmen, dann hat zumindest das geklappt.</p>
<p>So wie ich es Codemässig gemacht habe könnt ihr unten entnehmen. Ich möchte noch hierbei erwähnen, dass das mit MapVirtualKey mein letzter Test war wo ich versucht habe es zum funktionieren zu kriegen, leider ohne Erfolg. Achja, das hwd innerhalb der Schleife um das Spiel dem Focus zu geben hat auch nicht geholfen, ich denke das Problem liegt wo anders.</p>
<p>Achja, debuggen kann ich nicht , wenn das Spiel läuft nicht da die Anticheat Software das verhindert. Das Interessante hierbei ist auch, dass es in einem normalen Windowsprogramm astrein funktioniert - nur im Spiel zickt es.</p>
<p>Ich brauche hilfe, ich versuch das schon seit 3 Tagen und ich krieg es einfach nicht hin, Ideen hab ich auch keine mehr die ich noch versuchen kann.</p>
<p>keybd_event hab ich auch normal aufgerufen (ohne Mapvirtualkey) und die Taste(n) lass ich auch los <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>
<pre><code class="language-cpp">int i;
AnsiString temp, temp2;

HWND hwnd = FindWindow(NULL, &quot;MU&quot;);
SetForegroundWindow(hwnd);

for (i=1;i&lt;10+1;i++)
{
	if (dynamic_cast&lt;TCheckBox*&gt;(FindComponent(&quot;chkBoxMacro&quot;+String(i)))-&gt;Checked == true)
	{
		if (i==10)
		{
			temp2 = dynamic_cast &lt;TEdit*&gt;(FindComponent(&quot;edtMacro&quot;+String(i)))-&gt;Text;
			temp.sprintf(&quot;/%d %s&quot;, 0, temp2);
			Clipboard()-&gt;AsText = temp;
			keybd_event(0xD, 0, 0, NULL);
			keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0);
			keybd_event(0x56,MapVirtualKey(0x56,0),0,0);
			keybd_event(0x56,MapVirtualKey(0x56,0),KEYEVENTF_KEYUP,0);
			keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);
			keybd_event(0xD, 0, KEYEVENTF_KEYUP, 0);
			Sleep(30);
			Clipboard()-&gt;Clear();
		}

		else
		{
			temp2 = dynamic_cast &lt;TEdit*&gt;(FindComponent(&quot;edtMacro&quot;+String(i)))-&gt;Text;
			temp.sprintf(&quot;/%d %s&quot;, i, temp2);
			Clipboard()-&gt;AsText = temp;
			keybd_event(0xD, 0, 0, NULL);  				
			keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0);
			keybd_event(0x56,MapVirtualKey(0x56,0),0,0);
			keybd_event(0x56,MapVirtualKey(0x56,0),KEYEVENTF_KEYUP,0);
			keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);
			keybd_event(0xD, 0, KEYEVENTF_KEYUP, 0);			
			Sleep(30);
			Clipboard()-&gt;Clear();
		}
   }
}
</code></pre>
<p>Ein weiteres Problem habe ich, wenn ich im Spiel ALT+1-9 drücken möchte - hier sollten normalerweise dann die Macros im Spiel &quot;aktiviert&quot; werden, dass funktioniert aber auch nicht <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>
<pre><code class="language-cpp">int i;
int tmp[10]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x30};

HWND hwnd = FindWindow(NULL, &quot;MU&quot;);
SetForegroundWindow(hwnd);

for (i=1;i&lt;10+1;i++)
{
	if (dynamic_cast&lt;TCheckBox*&gt;(FindComponent(&quot;chkBoxMacro&quot;+String(i)))-&gt;Checked == true)
	{
		keybd_event(0x12, 0, 0, NULL);
		keybd_event(tmp[i], 0, 0, NULL);
		keybd_event(tmp[i], 0, KEYEVENTF_KEYUP, 0);
		keybd_event(0x12, 0, KEYEVENTF_KEYUP, 0);
	}
}
</code></pre>
<p>Wo liegt der Hund begraben? Was mach ich falsch? Im übrigen, keybd_event funktioniert definitiv im Spiel da ich ein anderes Programm habe was auch keybd_event benutzt, nur halt nicht in der Forum wie ich es versuche zu schreiben. D.h. drücken von diversen Tasten ist möglich.</p>
<p>Danke für die Anteilnahme! <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/181863/probleme-mit-keybd_event</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 14:50:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181863.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 May 2007 10:15:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit keybd_event on Fri, 18 May 2007 10:16:56 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab ein Problem mit keybd_event. Ich versuche an ein Spiel strg+v zu senden. Die Daten kriege ich aus einem Editfeld und wird bevor das Paste passiert in die Zwischenablage kopiert - was soweit auch funktioniert. Bevor ich die Daten aus den Editfeldern auslesen, prüfe ich Checkboxen ob sie getickt sind mittels dynamic_cast und dann werden die Felder auch ausgelesen. Das prüfen der getickten Checkboxen und das Kopieren der Editfelder in die Zwischenablage kopieren funktioniert fehlerfrei. Das Problem liegt an dem Senden der Daten an das Spiel. Hierbei gehe ich so vor das ich im Spiel ENTER drücke, dann STRG+V und dann wieder ENTER. (Es handelt sich hierbei um Chatmacros wo ich keine Lust hab diese immer von Hand einzugeben, da diese fehlerhaft in einer Datei gespeichert werden wenn das Spiel beendet und somit eine Neueingabe erfordert und das möchte ich mir eben verkürzen).</p>
<p>Das witzige daran ist, wenn ich im Code ein Sleep einfüge läuft der Schleifenzähler weiter, d.h. wenn ich z.B. 10 Editfelder habe, wird dann innerhalb der Schleife (?) nur jedes 2te genommen (bzw. der Inhalt, sozusagen Editfeld 1,3,5,7,9 und die restlichen werden &quot;ausgelassen&quot; und genau hier liegt mein Problem. Wenn ich es ohne Sleep mach krieg ich eine Fehlermeldung vom Clipboard das nicht geöffnet werden kann. Also musste ich hier schon mal ein Sleep nehmen, dann hat zumindest das geklappt.</p>
<p>So wie ich es Codemässig gemacht habe könnt ihr unten entnehmen. Ich möchte noch hierbei erwähnen, dass das mit MapVirtualKey mein letzter Test war wo ich versucht habe es zum funktionieren zu kriegen, leider ohne Erfolg. Achja, das hwd innerhalb der Schleife um das Spiel dem Focus zu geben hat auch nicht geholfen, ich denke das Problem liegt wo anders.</p>
<p>Achja, debuggen kann ich nicht , wenn das Spiel läuft nicht da die Anticheat Software das verhindert. Das Interessante hierbei ist auch, dass es in einem normalen Windowsprogramm astrein funktioniert - nur im Spiel zickt es.</p>
<p>Ich brauche hilfe, ich versuch das schon seit 3 Tagen und ich krieg es einfach nicht hin, Ideen hab ich auch keine mehr die ich noch versuchen kann.</p>
<p>keybd_event hab ich auch normal aufgerufen (ohne Mapvirtualkey) und die Taste(n) lass ich auch los <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>
<pre><code class="language-cpp">int i;
AnsiString temp, temp2;

HWND hwnd = FindWindow(NULL, &quot;MU&quot;);
SetForegroundWindow(hwnd);

for (i=1;i&lt;10+1;i++)
{
	if (dynamic_cast&lt;TCheckBox*&gt;(FindComponent(&quot;chkBoxMacro&quot;+String(i)))-&gt;Checked == true)
	{
		if (i==10)
		{
			temp2 = dynamic_cast &lt;TEdit*&gt;(FindComponent(&quot;edtMacro&quot;+String(i)))-&gt;Text;
			temp.sprintf(&quot;/%d %s&quot;, 0, temp2);
			Clipboard()-&gt;AsText = temp;
			keybd_event(0xD, 0, 0, NULL);
			keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0);
			keybd_event(0x56,MapVirtualKey(0x56,0),0,0);
			keybd_event(0x56,MapVirtualKey(0x56,0),KEYEVENTF_KEYUP,0);
			keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);
			keybd_event(0xD, 0, KEYEVENTF_KEYUP, 0);
			Sleep(30);
			Clipboard()-&gt;Clear();
		}

		else
		{
			temp2 = dynamic_cast &lt;TEdit*&gt;(FindComponent(&quot;edtMacro&quot;+String(i)))-&gt;Text;
			temp.sprintf(&quot;/%d %s&quot;, i, temp2);
			Clipboard()-&gt;AsText = temp;
			keybd_event(0xD, 0, 0, NULL);  				
			keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0);
			keybd_event(0x56,MapVirtualKey(0x56,0),0,0);
			keybd_event(0x56,MapVirtualKey(0x56,0),KEYEVENTF_KEYUP,0);
			keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);
			keybd_event(0xD, 0, KEYEVENTF_KEYUP, 0);			
			Sleep(30);
			Clipboard()-&gt;Clear();
		}
   }
}
</code></pre>
<p>Ein weiteres Problem habe ich, wenn ich im Spiel ALT+1-9 drücken möchte - hier sollten normalerweise dann die Macros im Spiel &quot;aktiviert&quot; werden, dass funktioniert aber auch nicht <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>
<pre><code class="language-cpp">int i;
int tmp[10]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x30};

HWND hwnd = FindWindow(NULL, &quot;MU&quot;);
SetForegroundWindow(hwnd);

for (i=1;i&lt;10+1;i++)
{
	if (dynamic_cast&lt;TCheckBox*&gt;(FindComponent(&quot;chkBoxMacro&quot;+String(i)))-&gt;Checked == true)
	{
		keybd_event(0x12, 0, 0, NULL);
		keybd_event(tmp[i], 0, 0, NULL);
		keybd_event(tmp[i], 0, KEYEVENTF_KEYUP, 0);
		keybd_event(0x12, 0, KEYEVENTF_KEYUP, 0);
	}
}
</code></pre>
<p>Wo liegt der Hund begraben? Was mach ich falsch? Im übrigen, keybd_event funktioniert definitiv im Spiel da ich ein anderes Programm habe was auch keybd_event benutzt, nur halt nicht in der Forum wie ich es versuche zu schreiben. D.h. drücken von diversen Tasten ist möglich.</p>
<p>Danke für die Anteilnahme! <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/1287272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1287272</guid><dc:creator><![CDATA[Maverick]]></dc:creator><pubDate>Fri, 18 May 2007 10:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit keybd_event on Mon, 21 May 2007 12:39:19 GMT]]></title><description><![CDATA[<p>Ich komm mir ignoriert vor, irgend jemand muss doch noch eine Idee haben <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/1289026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1289026</guid><dc:creator><![CDATA[Maverick]]></dc:creator><pubDate>Mon, 21 May 2007 12:39:19 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit keybd_event on Mon, 21 May 2007 13:30:38 GMT]]></title><description><![CDATA[<p>Ich vermute einfach mal, dass Du einen DirectX-Hook brauchst, um die Tastendrücke zu simulieren. Ich kann mir nicht vorstellen, dass Spiele einfach den Tastaturpuffer verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1289079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1289079</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 May 2007 13:30:38 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit keybd_event on Mon, 21 May 2007 15:52:20 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-14774.html" rel="nofollow">akari</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-2.html" rel="nofollow">VCL/CLX (Borland 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/1289224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1289224</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 21 May 2007 15:52:20 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit keybd_event on Mon, 21 May 2007 17:13:10 GMT]]></title><description><![CDATA[<p>Joe_M. schrieb:</p>
<blockquote>
<p>Ich vermute einfach mal, dass Du einen DirectX-Hook brauchst, um die Tastendrücke zu simulieren. Ich kann mir nicht vorstellen, dass Spiele einfach den Tastaturpuffer verwenden.</p>
</blockquote>
<p>Ich hab halt nur das Problem, dass ich irgendwo eine verzögerung einbauen kann damit die Tasten gedrückt werden. Prinzipiell funktioniert es ja auch, nur werden halt paar Tasten bzw. Eingaben übersprungen wenn ich Sleep einbaue, da, wie oben schon geschrieben der Schleifenzähler dann rumspinnt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1289284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1289284</guid><dc:creator><![CDATA[Maverick]]></dc:creator><pubDate>Mon, 21 May 2007 17:13:10 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit keybd_event on Tue, 22 May 2007 10:23:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Sleep hällt das Programm an und verhindert jede weitere eingabe! Ich weiß nich so wirklich auf was du hinauswillst! Aber vielleicht hilft dir Application-&gt;ProcessMessages...</p>
<p>mfg, Micha!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1289737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1289737</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 22 May 2007 10:23:40 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit keybd_event on Tue, 22 May 2007 11:26:06 GMT]]></title><description><![CDATA[<p>Aber wieso springt der Schleifenzähler dann weiter? Ich verstehe es nicht. Application-&gt;ProcessMessages hab ich schon probiert, hilft auch nicht.</p>
<p>Mir würde es ja schon reichen wenn ich eine verzögerung einbauen kann, nur hab ich keine Idee wie ich das realisieren kann.</p>
<p>Hat jemand eine Idee bzw. Tip?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1289785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1289785</guid><dc:creator><![CDATA[Maverick]]></dc:creator><pubDate>Tue, 22 May 2007 11:26:06 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit keybd_event on Sat, 26 May 2007 06:44:50 GMT]]></title><description><![CDATA[<p>So, also ich hab das jetzt paar Tage ruhen lassen, habe es trotzdem noch nicht hinbekommen <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>
<p>Ich hab mal wieder mit AutoIt rumgespielt, dabei hab ich gesehen das die eine Funktion &quot;Send&quot; haben, damit wird der komplette String gesendet, ohne Zwischenablage (also nicht so wie ich es gemacht habe bzw. machen wollte).</p>
<p>Send(&quot;{ENTER}&quot;)<br />
sleep(200)<br />
Send(&quot;*zu sendener string*&quot;)<br />
Send(&quot;{ENTER}&quot;)</p>
<p>Weitaus komfortabler und ohne STRG+V. Hat jemand eine Idee wie die das mit Send gemacht haben könnten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292535</guid><dc:creator><![CDATA[Maverick]]></dc:creator><pubDate>Sat, 26 May 2007 06:44:50 GMT</pubDate></item></channel></rss>