<?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[Keyboard Inputs simulieren - verzweifle...]]></title><description><![CDATA[<p>Guten Tag allerseits,</p>
<p>Ich möchte lernen, Makros in C++ zu schreiben. Da ein Kumpel und ich abundzu mal Guild Wars spielen, dachte ich mir, schreibste doch mal ne automatisierung zum Üben. Prinipiell ist das auch kein Problem, denn die Funktionen, die ich dazu brauche habe ich bereits geschrieben. Zuerst habe ich das senden von Keystrokes mit der keybd_event Funktion probiert. Es ging alles gut, mein Programm konnte alles mögliche in eine Textdokument schreiben. Das Problem ist nur, dass im Spiel keine Hotkeys ausgelöst werden. Also es poppt ein Fenster im Spiel auf und normal drücke ich Enter um das wegzubekommen. Wenn ich das Enterdrücken mit meinem Programm machen möchte, so reagiert das Fenster im Spiel aber nicht. Jedes andere Fenster reagiert.. habe mal eine MessageBox kreiert und diese mittels des virtuellen Enterdrucks geschlossen. Dann dachte ich, dass liegt vielleicht daran, dass keybd_event veraltet ist. Daher benutze ich SendInput. Hier genau das selbe, im Textdokument wird alles geschrieben, allerdings reagiert das Spiel nicht auf die virtuelle Tasteneingabe. Ich habe alles mir mögliche getan, habe es in den Focus + Vordergrund gesetzt..</p>
<pre><code class="language-cpp">targetHWND=FindWindowA(NULL,&quot;Guild Wars&quot;);
    SetFocus(targetHWND);
    SetForegroundWindow(targetHWND);
</code></pre>
<p>Dann habe ich es mit Attachments versucht:</p>
<pre><code class="language-cpp">thisThread=GetCurrentThreadId();
    otherThread=GetWindowThreadProcessId(targetHWND,NULL);

    //Verbinden....

    if(!AttachThreadInput(thisThread,otherThread,true)) 
    {
    	MessageBoxA(0,&quot;Mistake&quot;,&quot;Attachment failed&quot;,0);
    }
</code></pre>
<p>Theoretisch funktioniert das auch alles, nur nicht im Spiel. Das Problem ist, ich habe mich jetzt richtig in das Problem reingesteigert und will das jetzt lösen, sonst kann ich nicht gut schlafen <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="🙂"
    /> Hier sind mal die Funktionen:</p>
<pre><code class="language-cpp">void sendakey(int mykey)
{

	INPUT input[2];
    memset(input, 0, sizeof(input));
	input[0].type = INPUT_KEYBOARD;

	input[0].ki.wVk = mykey;
	input[0].ki.dwFlags = 0;
	input[0].ki.time = 0;
	input[0].ki.dwExtraInfo = 0;

	input[1].ki.wVk = mykey;
	input[1].ki.dwFlags = KEYEVENTF_KEYUP;
	input[1].ki.time = 0;
	input[1].ki.dwExtraInfo = 0;

	SendInput(2,input,sizeof(INPUT));
}
</code></pre>
<p>Hier die keybd_event Funktion:</p>
<pre><code class="language-cpp">void sendkey(int key)
{
     keybd_event(key, 0, 0, 0); 
     keybd_event(key, 0, KEYEVENTF_KEYUP, 0);
}
</code></pre>
<p>Desweitern kennt bestimmt jeder die Scriptsprache AutoIt. Die Script die ich dort schreiben kann, funktionieren. Also sie schreiben Text und das Spiel reagiert auch auf die virtuellen Eingaben.<br />
Ich überlege, mir den Sourcecode runterzuladen und mir die Funktion einmal in C++ anzuschauen, nur weiss ich nicht ob das so legitim ist.</p>
<p>Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190735/keyboard-inputs-simulieren-verzweifle</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 08:19:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190735.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Aug 2007 10:53:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Sun, 26 Aug 2007 10:53:25 GMT]]></title><description><![CDATA[<p>Guten Tag allerseits,</p>
<p>Ich möchte lernen, Makros in C++ zu schreiben. Da ein Kumpel und ich abundzu mal Guild Wars spielen, dachte ich mir, schreibste doch mal ne automatisierung zum Üben. Prinipiell ist das auch kein Problem, denn die Funktionen, die ich dazu brauche habe ich bereits geschrieben. Zuerst habe ich das senden von Keystrokes mit der keybd_event Funktion probiert. Es ging alles gut, mein Programm konnte alles mögliche in eine Textdokument schreiben. Das Problem ist nur, dass im Spiel keine Hotkeys ausgelöst werden. Also es poppt ein Fenster im Spiel auf und normal drücke ich Enter um das wegzubekommen. Wenn ich das Enterdrücken mit meinem Programm machen möchte, so reagiert das Fenster im Spiel aber nicht. Jedes andere Fenster reagiert.. habe mal eine MessageBox kreiert und diese mittels des virtuellen Enterdrucks geschlossen. Dann dachte ich, dass liegt vielleicht daran, dass keybd_event veraltet ist. Daher benutze ich SendInput. Hier genau das selbe, im Textdokument wird alles geschrieben, allerdings reagiert das Spiel nicht auf die virtuelle Tasteneingabe. Ich habe alles mir mögliche getan, habe es in den Focus + Vordergrund gesetzt..</p>
<pre><code class="language-cpp">targetHWND=FindWindowA(NULL,&quot;Guild Wars&quot;);
    SetFocus(targetHWND);
    SetForegroundWindow(targetHWND);
</code></pre>
<p>Dann habe ich es mit Attachments versucht:</p>
<pre><code class="language-cpp">thisThread=GetCurrentThreadId();
    otherThread=GetWindowThreadProcessId(targetHWND,NULL);

    //Verbinden....

    if(!AttachThreadInput(thisThread,otherThread,true)) 
    {
    	MessageBoxA(0,&quot;Mistake&quot;,&quot;Attachment failed&quot;,0);
    }
</code></pre>
<p>Theoretisch funktioniert das auch alles, nur nicht im Spiel. Das Problem ist, ich habe mich jetzt richtig in das Problem reingesteigert und will das jetzt lösen, sonst kann ich nicht gut schlafen <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="🙂"
    /> Hier sind mal die Funktionen:</p>
<pre><code class="language-cpp">void sendakey(int mykey)
{

	INPUT input[2];
    memset(input, 0, sizeof(input));
	input[0].type = INPUT_KEYBOARD;

	input[0].ki.wVk = mykey;
	input[0].ki.dwFlags = 0;
	input[0].ki.time = 0;
	input[0].ki.dwExtraInfo = 0;

	input[1].ki.wVk = mykey;
	input[1].ki.dwFlags = KEYEVENTF_KEYUP;
	input[1].ki.time = 0;
	input[1].ki.dwExtraInfo = 0;

	SendInput(2,input,sizeof(INPUT));
}
</code></pre>
<p>Hier die keybd_event Funktion:</p>
<pre><code class="language-cpp">void sendkey(int key)
{
     keybd_event(key, 0, 0, 0); 
     keybd_event(key, 0, KEYEVENTF_KEYUP, 0);
}
</code></pre>
<p>Desweitern kennt bestimmt jeder die Scriptsprache AutoIt. Die Script die ich dort schreiben kann, funktionieren. Also sie schreiben Text und das Spiel reagiert auch auf die virtuellen Eingaben.<br />
Ich überlege, mir den Sourcecode runterzuladen und mir die Funktion einmal in C++ anzuschauen, nur weiss ich nicht ob das so legitim ist.</p>
<p>Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352219</guid><dc:creator><![CDATA[chris2k6]]></dc:creator><pubDate>Sun, 26 Aug 2007 10:53:25 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Sun, 26 Aug 2007 11:26:29 GMT]]></title><description><![CDATA[<p>Hm, warum das nicht funktioniert, weiß ich nicht genau. Evtl könnte es helfen, wenn du erst ein Key-Down und dann ein Key-Up sendest <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>chris2k6 schrieb:</p>
<blockquote>
<p>Ich überlege, mir den Sourcecode runterzuladen und mir die Funktion einmal in C++ anzuschauen, nur weiss ich nicht ob das so legitim ist.</p>
</blockquote>
<p>Anschauen ist <em>immer</em> legitim (es sei denn du bist unter 18 und willst dir Pornos oder gewaltträchtige Filme ansehen) <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/1352239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352239</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 26 Aug 2007 11:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Sun, 26 Aug 2007 13:01:20 GMT]]></title><description><![CDATA[<p>Also ansehen und natürlich gucken wie die Funktion geht. Dann selbst zusammenbauen <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>Hier mal der MSDN Link zu der Inputstruct, vll mach ich ja was falsch ..</p>
<p><a href="http://msdn2.microsoft.com/en-us/library/ms646271.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/ms646271.aspx</a></p>
<p>So im au3 Sourcecode scheint zum einen die keybd_event Funktion benutzt zu werden, aber anscheinend noch was anderes, und zwar die PostMessage Funktion:</p>
<p><a href="http://msdn2.microsoft.com/en-us/library/ms644944.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/ms644944.aspx</a></p>
<p>Ist das auch eine Funktion wie keybd_event und SendInput? Denn ich durchblick diese Funktio nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352298</guid><dc:creator><![CDATA[chris2k6]]></dc:creator><pubDate>Sun, 26 Aug 2007 13:01:20 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Sun, 26 Aug 2007 14:53:18 GMT]]></title><description><![CDATA[<p>PostMessage ist eine Methode, mit der unter Windows Programme und auch das Betriebsystem miteinander kommunizieren. Es gibt relativ viele Messages, die man mittels der Funktionen Post/SendMessage versenden kann, darunter fallen auch Emulationen von Maus- und Tastatureingaben.</p>
<p>Hier wird ganz gut noch der Unterschied zwischen Post- und SendMessage beschrieben:<br />
<a href="http://www.microsoft.com/germany/msdn/library/windows/SoWerdenInWindowsNachrichtenVersandt.mspx?mfr=true" rel="nofollow">http://www.microsoft.com/germany/msdn/library/windows/SoWerdenInWindowsNachrichtenVersandt.mspx?mfr=true</a></p>
<p>Egtl gehört der Thread eher ins WinAPI Forum würde ich sagen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352378</guid><dc:creator><![CDATA[noNeed 4 aNick]]></dc:creator><pubDate>Sun, 26 Aug 2007 14:53:18 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Sun, 26 Aug 2007 19:38:44 GMT]]></title><description><![CDATA[<p>Then move plx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352586</guid><dc:creator><![CDATA[chris2k6]]></dc:creator><pubDate>Sun, 26 Aug 2007 19:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Mon, 27 Aug 2007 07:36:23 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-18038.html" rel="nofollow">CStoll</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</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/1352726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352726</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 27 Aug 2007 07:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Mon, 27 Aug 2007 14:24:55 GMT]]></title><description><![CDATA[<p>noNeed 4 aNick schrieb:</p>
<blockquote>
<p>PostMessage ist eine Methode, mit der unter Windows Programme und auch das Betriebsystem miteinander kommunizieren. Es gibt relativ viele Messages, die man mittels der Funktionen Post/SendMessage versenden kann, darunter fallen auch Emulationen von Maus- und Tastatureingaben.</p>
<p>Hier wird ganz gut noch der Unterschied zwischen Post- und SendMessage beschrieben:<br />
<a href="http://www.microsoft.com/germany/msdn/library/windows/SoWerdenInWindowsNachrichtenVersandt.mspx?mfr=true" rel="nofollow">http://www.microsoft.com/germany/msdn/library/windows/SoWerdenInWindowsNachrichtenVersandt.mspx?mfr=true</a></p>
<p>Egtl gehört der Thread eher ins WinAPI Forum würde ich sagen...</p>
</blockquote>
<p>Da steht zwar, dass man PostMessage zum Simulieren von Eingaben benutzen kann, aber nicht wie. In der FUnktionserklärung auch nicht: <a href="http://msdn2.microsoft.com/en-us/library/Aa923831.aspx#Mtps_DropDownFilterText" rel="nofollow">http://msdn2.microsoft.com/en-us/library/Aa923831.aspx#Mtps_DropDownFilterText</a></p>
<p>Kann jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353083</guid><dc:creator><![CDATA[chris2k6]]></dc:creator><pubDate>Mon, 27 Aug 2007 14:24:55 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Mon, 27 Aug 2007 16:30:40 GMT]]></title><description><![CDATA[<p>Da kenne ich auch ein Spiel....<br />
Bei mir hat es nicht funktioniert, aber mit so einem kleinen Autoit Skript <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>Leider weiß ich nicht, wo ihr gerade seid, aber wo genau kann man sich den Source Code herunterladen?<br />
Ich finde den nicht...</p>
<p>Dann könnte ich mir das auch einmal angucken <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/1353169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353169</guid><dc:creator><![CDATA[dwoonload]]></dc:creator><pubDate>Mon, 27 Aug 2007 16:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Mon, 27 Aug 2007 18:29:59 GMT]]></title><description><![CDATA[<p>au3: weiss nicht mehr genau welche File die beste war, aber hier:</p>
<p><a href="http://www.autoitscript.com/autoit3/files/beta/autoit/" rel="nofollow">http://www.autoitscript.com/autoit3/files/beta/autoit/</a></p>
<p>AutoHotKey:</p>
<p><a href="http://www.autohotkey.com/download/AutoHotkey_source.exe" rel="nofollow">http://www.autohotkey.com/download/AutoHotkey_source.exe</a></p>
<p>Danke fürs Engagement <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/1353241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353241</guid><dc:creator><![CDATA[chris2k6]]></dc:creator><pubDate>Mon, 27 Aug 2007 18:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Sat, 01 Sep 2007 19:28:33 GMT]]></title><description><![CDATA[<p>Könnte es vielleicht daran liegen, dass ich einen Hardwarecheck machen muss? Also bei der keybd_event Funktion. Das ist das einzige was mir noch einfällt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357011</guid><dc:creator><![CDATA[chris2k6]]></dc:creator><pubDate>Sat, 01 Sep 2007 19:28:33 GMT</pubDate></item><item><title><![CDATA[Reply to Keyboard Inputs simulieren - verzweifle... on Sat, 08 Sep 2007 22:34:39 GMT]]></title><description><![CDATA[<p>Für die Nachwelt:</p>
<p>Nach einigem rumprobieren bin ich mit Hilfe einer sehr klugen Person zu dem Schluss gekommen, dass GW nur Inputs vom Gerätetreiber akzeptiert. Windows Inputs werden geblockt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1361648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1361648</guid><dc:creator><![CDATA[chris2k6]]></dc:creator><pubDate>Sat, 08 Sep 2007 22:34:39 GMT</pubDate></item></channel></rss>