<?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[&amp;lt;erledigt&amp;gt;Virtual-Key Code umwandeln... und SendMessage Problem]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich komme heute einfach nicht in die Gänge und find momentan keine Lösung, darum bitte ich Euch um Hilfe.</p>
<p>Ich danke Euch schon mal im vorraus fürs helfen.</p>
<p><em><strong>Problem 1:</strong></em></p>
<p><strong>Ablaufbeschreibung:</strong><br />
Ich setzte ein Hook mit WH_KEYBOARD auf mein Ziel-Fenster und fange dessen Messages ab.</p>
<p><strong>Problembeschreibung:</strong><br />
Nun zum eigentlichen Problem, in der LRESULT CALLBACK Funktion empfang ich folgende Variable&quot;LPARAM&quot;.<br />
Diese Variable enthält in meinem Beispiel die Tastatur Eingaben als Virtual-Key Code.<br />
Nun wollt ich wissen ob man den Virtual-Key Code direkt umwandeln kann oder muss ich alles per if abfragen und selbst umwandeln.</p>
<p>Etwa so:</p>
<pre><code class="language-cpp">if(strcmp((0xFF0000&amp;LPARAM)&gt;&gt;16) == (0x41))
   std::cout &lt;&lt; &quot;Ist ein A&quot; &lt;&lt; std::endl;
</code></pre>
<p>*(Der Code ist einfach so aus dem Ärmel geschüttelt, keine Ahnung ob er funktioniert.)<br />
*</p>
<p>Gibt es da eine andere Möglichkeit?</p>
<p><em><strong>Problem 2:</strong></em></p>
<p>Wie oben beschrieben erhalte ich die Messages des Ziel-Fenster in meiner Hook.dll, nun wollte ich diese Informationen weiterleiten zu meinem Main-Programm mittels der SendMessage. (Wenn es eine bessere Möglichkeit als diese gibt, dann sagt das mir ruhig...)</p>
<p>Das mache ich wie folgt:</p>
<pre><code class="language-cpp">check = SendMessage(g_hWnd, WM_COPYDATA, 0, (LPARAM)(VOID*)&amp;CDS);

//g_hwnd ist der Handler von meinem Main-Programm
</code></pre>
<p>Im Main-Programm sollte ich diese Message abfangen..</p>
<pre><code class="language-cpp">LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch( msg )
	{
		case WM_COPYDATA:
		{
			MessageBox(hWnd, TEXT(&quot;COPYDATA&quot;), TEXT(&quot;COPYDATA&quot;), MB_OK);
		}
}
</code></pre>
<p>Nur kommt da nie was an leider...<br />
Ich habe mit Spy++ nachgeschaut ob eine Nachricht kommt, aber leider ohne erfolg.. <em>(Könnte ja sein das ich es falsch abfange)</em></p>
<p>Ist dieses Verfahren möglich mittels SendMessage die Daten zu meinem Main Programm zu schicken? Und ist es sinnvoll und effizient?<br />
Wisst ihr per zufall wieso es nicht lauft *MagischeKugelFrag*</p>
<p><strong>Nochmals Danke fürs helfen.</strong></p>
<p><em>PS: Das Programm dient zum Üben von der WinAPI, vielleicht entwickle ich es noch weiter das ich die Console Messages von Counter-Strike Source abfange und die dann auswerte (Kills/Death Statistik). Aber das ist eher sinnlos, da es besser wäre das über ein Server-Plugin zu lösen.</em>.</p>
<p>MSDN Link:<br />
<a href="http://msdn.microsoft.com/en-us/library/ms674714(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms674714(VS.85).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220663/lt-erledigt-gt-virtual-key-code-umwandeln-und-sendmessage-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 17:02:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220663.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Aug 2008 12:53:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;lt;erledigt&amp;gt;Virtual-Key Code umwandeln... und SendMessage Problem on Thu, 21 Aug 2008 06:48:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich komme heute einfach nicht in die Gänge und find momentan keine Lösung, darum bitte ich Euch um Hilfe.</p>
<p>Ich danke Euch schon mal im vorraus fürs helfen.</p>
<p><em><strong>Problem 1:</strong></em></p>
<p><strong>Ablaufbeschreibung:</strong><br />
Ich setzte ein Hook mit WH_KEYBOARD auf mein Ziel-Fenster und fange dessen Messages ab.</p>
<p><strong>Problembeschreibung:</strong><br />
Nun zum eigentlichen Problem, in der LRESULT CALLBACK Funktion empfang ich folgende Variable&quot;LPARAM&quot;.<br />
Diese Variable enthält in meinem Beispiel die Tastatur Eingaben als Virtual-Key Code.<br />
Nun wollt ich wissen ob man den Virtual-Key Code direkt umwandeln kann oder muss ich alles per if abfragen und selbst umwandeln.</p>
<p>Etwa so:</p>
<pre><code class="language-cpp">if(strcmp((0xFF0000&amp;LPARAM)&gt;&gt;16) == (0x41))
   std::cout &lt;&lt; &quot;Ist ein A&quot; &lt;&lt; std::endl;
</code></pre>
<p>*(Der Code ist einfach so aus dem Ärmel geschüttelt, keine Ahnung ob er funktioniert.)<br />
*</p>
<p>Gibt es da eine andere Möglichkeit?</p>
<p><em><strong>Problem 2:</strong></em></p>
<p>Wie oben beschrieben erhalte ich die Messages des Ziel-Fenster in meiner Hook.dll, nun wollte ich diese Informationen weiterleiten zu meinem Main-Programm mittels der SendMessage. (Wenn es eine bessere Möglichkeit als diese gibt, dann sagt das mir ruhig...)</p>
<p>Das mache ich wie folgt:</p>
<pre><code class="language-cpp">check = SendMessage(g_hWnd, WM_COPYDATA, 0, (LPARAM)(VOID*)&amp;CDS);

//g_hwnd ist der Handler von meinem Main-Programm
</code></pre>
<p>Im Main-Programm sollte ich diese Message abfangen..</p>
<pre><code class="language-cpp">LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch( msg )
	{
		case WM_COPYDATA:
		{
			MessageBox(hWnd, TEXT(&quot;COPYDATA&quot;), TEXT(&quot;COPYDATA&quot;), MB_OK);
		}
}
</code></pre>
<p>Nur kommt da nie was an leider...<br />
Ich habe mit Spy++ nachgeschaut ob eine Nachricht kommt, aber leider ohne erfolg.. <em>(Könnte ja sein das ich es falsch abfange)</em></p>
<p>Ist dieses Verfahren möglich mittels SendMessage die Daten zu meinem Main Programm zu schicken? Und ist es sinnvoll und effizient?<br />
Wisst ihr per zufall wieso es nicht lauft *MagischeKugelFrag*</p>
<p><strong>Nochmals Danke fürs helfen.</strong></p>
<p><em>PS: Das Programm dient zum Üben von der WinAPI, vielleicht entwickle ich es noch weiter das ich die Console Messages von Counter-Strike Source abfange und die dann auswerte (Kills/Death Statistik). Aber das ist eher sinnlos, da es besser wäre das über ein Server-Plugin zu lösen.</em>.</p>
<p>MSDN Link:<br />
<a href="http://msdn.microsoft.com/en-us/library/ms674714(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms674714(VS.85).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567545</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Thu, 21 Aug 2008 06:48:05 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;lt;erledigt&amp;gt;Virtual-Key Code umwandeln... und SendMessage Problem on Tue, 19 Aug 2008 13:31:14 GMT]]></title><description><![CDATA[<p>Du kannst GetKeyNameText verwenden:<br />
<a href="http://msdn.microsoft.com/en-us/library/ms646300(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms646300(VS.85).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567577</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 19 Aug 2008 13:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;lt;erledigt&amp;gt;Virtual-Key Code umwandeln... und SendMessage Problem on Tue, 19 Aug 2008 13:41:19 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p><em>MapVirtualKey</em>:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ms646306(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms646306(VS.85).aspx</a></p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567586</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Tue, 19 Aug 2008 13:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;lt;erledigt&amp;gt;Virtual-Key Code umwandeln... und SendMessage Problem on Tue, 19 Aug 2008 13:58:44 GMT]]></title><description><![CDATA[<p>Danke für die schnellen antworten.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/35992">@Martin</a> Richter<br />
GetKeyNameText &lt;-- liefert ScanCode zurück.. (habe ich schon mal ausprobiert)</p>
<p>@Probe - Nutzer</p>
<pre><code class="language-cpp">messagel = MapVirtualKey(Event.lParam, MAPVK_VK_TO_CHAR);
</code></pre>
<p>Der Compiler kennt den Bezeichner MAPVK_VK... nicht, aber ich werde gleich noch schauen weshalb..</p>
<p>Hat wer noch eine Idee zu meinem 2 Problem? (SendMessage)</p>
<p>Gruess Manu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567604</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Tue, 19 Aug 2008 13:58:44 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;lt;erledigt&amp;gt;Virtual-Key Code umwandeln... und SendMessage Problem on Tue, 19 Aug 2008 14:29:47 GMT]]></title><description><![CDATA[<p>Ich habe hier auch nur das Platform SDK für VS 2005, dort sind diese Bezeichner auch noch nicht verfügbar, kann also gut sein, dass man das aktuellste SDK benötigt, um damit zu arbeiten. Ansonsten gibt es hier:</p>
<p><a href="http://blogs.msdn.com/michkap/archive/2006/08/29/729476.aspx" rel="nofollow">http://blogs.msdn.com/michkap/archive/2006/08/29/729476.aspx</a></p>
<p>die entsprechenden Werte, wie sie wohl auch in das SDK übernommen worden sind.</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567638</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Tue, 19 Aug 2008 14:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;lt;erledigt&amp;gt;Virtual-Key Code umwandeln... und SendMessage Problem on Wed, 20 Aug 2008 06:44:58 GMT]]></title><description><![CDATA[<p>Danke Probe - Nutzer!</p>
<p>Es läuft jetzt.</p>
<p>MapVirtualKey((0xFF0000&amp;Event.lParam)&gt;&gt;16, 1);</p>
<p>Mir ist aufgefallen das es sich um ScanCode handelt und nicht um Virtual-Key Code. Deshalb steht auch als 2 Parameter eine 1 und nicht eine 2.</p>
<p>Danke Nochmals.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567946</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Wed, 20 Aug 2008 06:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;lt;erledigt&amp;gt;Virtual-Key Code umwandeln... und SendMessage Problem on Wed, 20 Aug 2008 11:54:00 GMT]]></title><description><![CDATA[<p>2 Problem habe ich behoben..</p>
<p>Ich habe vergessen den Windows Handler vom Main Programm im Data Segment zu Definieren.. das es für die DLL überall Aufrufbar ist..</p>
<pre><code class="language-cpp">#pragma data_seg(&quot;.shared&quot;)

HANDLE g_DllHandle = 0;
HHOOK  g_hMyHook = 0;

HWND	g_hWnd = 0;   //NEU

#pragma data_seg()
#pragma comment(linker, &quot;/SECTION:.shared,RWS&quot;)
</code></pre>
<p>Korrigiert mich wenn ich falsch liege bitte..</p>
<p>Globale Variablen funktionieren bei DLL ansonsten nicht? Oo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568190</guid><dc:creator><![CDATA[mRXXo]]></dc:creator><pubDate>Wed, 20 Aug 2008 11:54:00 GMT</pubDate></item></channel></rss>