<?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[[geloest] media keys via keyboard hook abfragen?]]></title><description><![CDATA[<p>hi,</p>
<p>ich moechte in einem programm auf die &quot;media keys&quot; (play/pause/stop/usw.) reagieren (so wie es der wmp, winamp und co. auch tun).</p>
<p>ich habe nun ein/e/n (was ist der richtige artikel?!) keyboard hook dazu geschrieben und bekomme die tastendruecke der entspr. tasten mit, das ist kein problem.</p>
<p>allerdings muss ich die auch aus der dll in mein hauptprogramm bekommen.<br />
dazu dachte ich an sowas wie eine callback-funktion, aber das wollte mir nicht wirklich gelingen.<br />
ein bool-array fuer den zustand jeder der entspr. tasten in der dll anlegen und exportieren scheint mir irgendwie nicht allzu optimal und wuerde mich nicht weit bringen, weil ich es nicht regelmaessig checken kann.</p>
<p>der haupt-loop laeuft in einer klasse, die nichts mit den tasten zu tun hat (mit einem sleep von einigen bis einigen hundert ms nach jedem durchlauf).</p>
<p>ich hoffe, das problem ist einigermassen deutlich geworden.<br />
es faellt mir im moment etwas schwer, das ganze vernuenftig zu formulieren - wahrscheinlich, weil ich gerade genauso unstrukturiert denke wie der code aussieht ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>was waere hier ein sinnvoller loesungsansatz?<br />
evtl. ein extra thread zum checken der tastendruecke?</p>
<p>vielen dank im voraus!<br />
... und gute nacht an alle. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/241947/geloest-media-keys-via-keyboard-hook-abfragen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 20:41:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/241947.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 May 2009 21:52:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [geloest] media keys via keyboard hook abfragen? on Sat, 30 May 2009 09:55:56 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich moechte in einem programm auf die &quot;media keys&quot; (play/pause/stop/usw.) reagieren (so wie es der wmp, winamp und co. auch tun).</p>
<p>ich habe nun ein/e/n (was ist der richtige artikel?!) keyboard hook dazu geschrieben und bekomme die tastendruecke der entspr. tasten mit, das ist kein problem.</p>
<p>allerdings muss ich die auch aus der dll in mein hauptprogramm bekommen.<br />
dazu dachte ich an sowas wie eine callback-funktion, aber das wollte mir nicht wirklich gelingen.<br />
ein bool-array fuer den zustand jeder der entspr. tasten in der dll anlegen und exportieren scheint mir irgendwie nicht allzu optimal und wuerde mich nicht weit bringen, weil ich es nicht regelmaessig checken kann.</p>
<p>der haupt-loop laeuft in einer klasse, die nichts mit den tasten zu tun hat (mit einem sleep von einigen bis einigen hundert ms nach jedem durchlauf).</p>
<p>ich hoffe, das problem ist einigermassen deutlich geworden.<br />
es faellt mir im moment etwas schwer, das ganze vernuenftig zu formulieren - wahrscheinlich, weil ich gerade genauso unstrukturiert denke wie der code aussieht ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>was waere hier ein sinnvoller loesungsansatz?<br />
evtl. ein extra thread zum checken der tastendruecke?</p>
<p>vielen dank im voraus!<br />
... und gute nacht an alle. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716961</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Sat, 30 May 2009 09:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to [geloest] media keys via keyboard hook abfragen? on Thu, 28 May 2009 06:02:31 GMT]]></title><description><![CDATA[<p>Lies mal die MSDN zu WM_APPCOMMAND!<br />
<a href="http://msdn.microsoft.com/en-us/library/ms646275.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms646275.aspx</a></p>
<p>Und ShellProc<br />
<a href="http://msdn.microsoft.com/en-us/library/ms644991(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms644991(VS.85).aspx</a></p>
<p><a href="http://www.codeguru.com/cpp/w-p/system/keyboard/article.php/c5655" rel="nofollow">http://www.codeguru.com/cpp/w-p/system/keyboard/article.php/c5655</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717001</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 28 May 2009 06:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to [geloest] media keys via keyboard hook abfragen? on Thu, 28 May 2009 08:29:47 GMT]]></title><description><![CDATA[<p>vielen dank!</p>
<p>die links haben mir wirklich etwas geholfen, allerdings habe ich immer noch keine window procedure in der ich die WM_APPCOMMAND-messages behandeln koennte, ich habe nichtmal ein fenster (das ganze wird nebenbei ein applet fuer die g15, sprich das interface ist nur auf dem display und ich rufe im main loop nur regelmaessig CEzLCD::Update auf).</p>
<p>d.h. ich suche immer noch einen weg, die tastendruecke in der hook zu erkennen (im link erklaert) und dann in meinem programm checken zu koennen (ohne window proc).<br />
am besten so, dass das ganze innerhalb einer klasse geregelt wird und ich die klasse ueberall benutzen kann, in welchem programm auch immer, also unabhaengig von der window proc.</p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717073</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Thu, 28 May 2009 08:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to [geloest] media keys via keyboard hook abfragen? on Thu, 28 May 2009 09:22:24 GMT]]></title><description><![CDATA[<p>Dieser Hook sendet IMHO eine Nachricht, and Dein Fenster.<br />
Wenn Du keines hast, dann musst Du eben ein Fenster aufbauen, oder Du musst eine andere Art von IPC verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717118</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 28 May 2009 09:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to [geloest] media keys via keyboard hook abfragen? on Fri, 29 May 2009 22:28:29 GMT]]></title><description><![CDATA[<p>ok ich hab es nun so implementiert, wie in deinem letzten link (<a href="http://www.codeguru.com/cpp/w-p/system/keyboard/article.php/c5655" rel="nofollow">http://www.codeguru.com/cpp/w-p/system/keyboard/article.php/c5655</a>).<br />
dazu habe ich ein unsichtbares fenster erstellt, das die entspr. messages via PostMessage aus der hook-funktion bekommt.</p>
<p>das klappt gut, solange mein windows message loop laeuft.<br />
allerdings gibt es den, wie gesagt, eigentlich nicht.</p>
<p>der main loop soll in einer anderen klasse laufen, die keine windows message queue hat/braucht/will.</p>
<p>1. kann ich zur not den message loop in einem separaten (worker-)thread ausfuehren?</p>
<pre><code>MSG msg;
bool res = true;
while( res )
{
	res = GetMessage( &amp;msg, NULL, 0, 0 );
	if( !res )
		return 1;
	TranslateMessage( &amp;msg );
	DispatchMessage( &amp;msg );
}
</code></pre>
<p>2. falls das geht, koennte ich in einer 2. klasse mein fensterchen haben, das message queue zeugs in einem extra thread einrichten und auf media tasten reagieren, ohne vom hauptprogramm abhaengig zu sein?</p>
<p>3. falls das mit der message queue/dem message loop in einem andere als dem main-thread nicht funktioniert, wie sollte ich das ganze dann loesen (falls &quot;das ganze&quot; nicht richtig erklaert wurde, bitte nachfragen!).</p>
<p>danke im voraus!</p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718144</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Fri, 29 May 2009 22:28:29 GMT</pubDate></item><item><title><![CDATA[Reply to [geloest] media keys via keyboard hook abfragen? on Sat, 30 May 2009 09:57:57 GMT]]></title><description><![CDATA[<p>ok, problem geloest. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>ich habe nun eine wunderbare, selbststaendige klasse, die mich via callback informieren kann, wenn die media-keys gedrueckt werden, und das funktioniert global.<br />
die klasse startet einen extra thread, in welchem ein unsichtbares fenster erstellt und die hook installiert werden und die windows message queue bearbeitet wird.<br />
komplett unabhaengig vom hauptprogramm.</p>
<p>danke fuer die hilfe Martin Richter, ohne die links haette ich das wohl nie hinbekommen ...</p>
<p>// edit: ich hab mich zwar ganz schoen bloed angestellt und wuerde mich wundern, wenn das noetig sein sollte, aber notfalls kann ich die klasse auch gerne posten/hochladen ...</p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718213</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Sat, 30 May 2009 09:57:57 GMT</pubDate></item></channel></rss>