<?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[SendMessage und SetActiveWindow]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich würde gerne mit SendMessage ne Message an mein Notepad-Fenster schicken aber nix funzt!! Mit nix meine ich dass weder das Notepad-Fenster aktiviert wird noch werden Zeichen an das Notepad-Fenster gesendet. Ich weiss ich weiss dass man es am Besten mit den Funktionen SendInput und keybd_event machen kann und ich habe das auch schon ausprobiert und es funzt einwandfrei. Aber aus bestimmten Gründen möchte ich jetzt auch mal die Lösung mit SendMessage probieren aber da habe ich bisher keinen Erfolg und weiss auch nicht warum. Vieleicht weiss jemand einen Rat. Hab schon rumgegooglt aber keine Lösung gefunden. Ein Haufen Beispiele aber bei mir hats ned gefunzt. Am Besten wäre ein kurzes fertiges Codeschipsel dass ich verwenden kann. Habe VisualC++2008 im auf einem WinXP Prof im Einsatz. Danke und liebe Grüsse rommi</p>
<pre><code>int main(void)
{  
   HWND hWnd2 = (FindWindow(NULL,&quot;Unbenannt - Editor&quot;));
   HWND SetActiveWindow(hWnd2);

   //XXX z.B. ein Return an das Notepad-Fenster schicken
   SendMessage(hWnd2, WM_KEYDOWN, VK_RETURN, 0);
   SendMessage(hWnd2, WM_KEYUP, VK_RETURN, 0);

   //...
   //...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/238731/sendmessage-und-setactivewindow</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Apr 2026 20:28:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238731.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Apr 2009 22:30:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Tue, 14 Apr 2009 22:30:14 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich würde gerne mit SendMessage ne Message an mein Notepad-Fenster schicken aber nix funzt!! Mit nix meine ich dass weder das Notepad-Fenster aktiviert wird noch werden Zeichen an das Notepad-Fenster gesendet. Ich weiss ich weiss dass man es am Besten mit den Funktionen SendInput und keybd_event machen kann und ich habe das auch schon ausprobiert und es funzt einwandfrei. Aber aus bestimmten Gründen möchte ich jetzt auch mal die Lösung mit SendMessage probieren aber da habe ich bisher keinen Erfolg und weiss auch nicht warum. Vieleicht weiss jemand einen Rat. Hab schon rumgegooglt aber keine Lösung gefunden. Ein Haufen Beispiele aber bei mir hats ned gefunzt. Am Besten wäre ein kurzes fertiges Codeschipsel dass ich verwenden kann. Habe VisualC++2008 im auf einem WinXP Prof im Einsatz. Danke und liebe Grüsse rommi</p>
<pre><code>int main(void)
{  
   HWND hWnd2 = (FindWindow(NULL,&quot;Unbenannt - Editor&quot;));
   HWND SetActiveWindow(hWnd2);

   //XXX z.B. ein Return an das Notepad-Fenster schicken
   SendMessage(hWnd2, WM_KEYDOWN, VK_RETURN, 0);
   SendMessage(hWnd2, WM_KEYUP, VK_RETURN, 0);

   //...
   //...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1695999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1695999</guid><dc:creator><![CDATA[rommi]]></dc:creator><pubDate>Tue, 14 Apr 2009 22:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Tue, 14 Apr 2009 23:14:10 GMT]]></title><description><![CDATA[<p>Hi,</p>
<blockquote>
<p>Mit nix meine ich dass weder das Notepad-Fenster aktiviert wird noch werden Zeichen an das Notepad-Fenster gesendet.</p>
</blockquote>
<p>Du aktivierst das Fenster auch nicht. Schau dir Zeile 4 deines Codes genau an: <code>HWND SetActiveWindow(hWnd2);</code> <em>deklariert eine Variable</em> namens <code>SetActiveWindow</code> und initialisiert diese zu <code>hWnd2</code> . Streich das <code>HWND</code> ; falls danach nicht umgehend eine Reaktion auftritt, transferiert dich hoffentlich bald jemand ins <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI Forum</a>.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696010</guid><dc:creator><![CDATA[*rant*]]></dc:creator><pubDate>Tue, 14 Apr 2009 23:14:10 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 10:53:15 GMT]]></title><description><![CDATA[<p>Sorry rant,<br />
das mit dem HWND war nicht beabsichtigt. Inzwischen habe ich einen Code zusammen gebastelt der ein gewüschtes Fenster aktiviert und fokusiert aber leider immer noch keine Zeichen einfügen kann (siehe Codebeispiel). Wenn ich meinen Beitrag ins Api-Forum verschieben könnte dann würde ich es machen, weiss nur nicht ob ich sowas selbst machen kann... Auf jeden Fall Danke für deine Antwort.</p>
<p>Hintergrund meiner Anfrage ist eigentlich dass ich mir die Arbeit auf meinem Computer ein wenig erleichtern möchte und dazu möchte ich Tastatur-eingaben und Mausbewegungen automatisch ablaufen lassen. Dazu sperre ich mit BlockInput zuvor Maus u. Tastatureingaben damit dann vorher definierte Maus und Tastatur-eingaben ungestört ablaufen können. Somit kann ich bestimmte Arbeiten automatisieren. Also eine Art Tastatur-Maus-Recorder (gib ja genügend im Internet) aber eben auf meine Zwecke angepasst.<br />
Das Sperren von Maus und Tastatur funzt auch einwandfrei und auch vorher definierte Mausbewegungen laufen trotz der Sperrung im Hintergund automatisch ab. Aber leider laufen die vorher definierten Tastatureingaben während der Sperrung nicht ab. Ich denke mal dass es mit den verschie-denen Schnittstellen zu tun hat. Auf jeden Fall habe ich es mal mit SendInput und keybd_event versucht aber keine Erfolg gehabt. Jetzt wollte ich es mal mit SendMessage versuchen aber hatte bisher keine Erfolg überhaupt mal Tastatureingaben an ein Fenster zu senden... Würd mich schon interessieren was ich falsch mache, hmm! Vieleicht gibt es ja auch noch ganz andere Funktionen die mein Problem lösen könnten?! Also wer was weiss darf sich ruhig melden <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>gruss rommi</p>
<pre><code>int main(void)
{
	//HWND hWnd=FindWindow(NULL,TEXT (&quot;Unbenannt - Editor&quot;));

	HWND hWnd = FindWindow(NULL, &quot;Dokument1 - Microsoft Word&quot;);
	ShowWindow(hWnd,SW_MAXIMIZE);
	SetActiveWindow(hWnd);
	SetForegroundWindow(hWnd);

	if (!hWnd)
	{
		MessageBox(0, TEXT (&quot;Winword nicht gestartet&quot;), 0, 0);
		return(0);
	}

	Sleep(2000);
	SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
	SendMessage(hWnd, WM_CHAR, VK_RETURN, 0);
	SendMessage(hWnd, WM_KEYUP, VK_RETURN, 0);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1696227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696227</guid><dc:creator><![CDATA[rommi]]></dc:creator><pubDate>Wed, 15 Apr 2009 10:53:15 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 11:49:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe heute morgen auf eine ähnliche Frage hin etwas im WinAPI-Forum gepostet. Sieh dir das mal an, könnte vieleicht interessant für dich sein.</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-238719.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-238719.html</a></p>
<p>Gruß, VV <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/1696254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696254</guid><dc:creator><![CDATA[VirtualVoid]]></dc:creator><pubDate>Wed, 15 Apr 2009 11:49:03 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 15:10:28 GMT]]></title><description><![CDATA[<p>Hallo VirtualVoid,</p>
<p>mit WM_SETTEXT kann ich den Titel vom Winword-Fester ändern und mit WM_CLOSE das Winword-Fenster schliessen und das funzt auch bei mir ohne Probleme. Darum verstehe ich erst recht nicht warum ich keine Zeichen(a-z, A-Z, Steuerzeichen etc.) mit WM_KEYDOWN, WM_CHAR oder WM_KEYUP an das Fenster selbst (also wo der Cursor aufblinkt) senden kann? Auch mit SendMessageW/SendMessageA hab ich es schon probiert aber hat auch nix gebracht. Hat keiner mal ein funktionierendes Beispiel parat, kann mir fast nicht forstellen dass noch niemand einen Text bzw. einen Tastendruck an ein Fenster wie Winword oder Notepad senden wollten. Wie schon mal geschrieben habe ich WinXP Prof und VisualC++2008 im Einsatz.</p>
<p>Danke und Gruss, rommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696336</guid><dc:creator><![CDATA[rommi]]></dc:creator><pubDate>Wed, 15 Apr 2009 15:10:28 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 15:16:21 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-14199.html" rel="nofollow">Phoemuex</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/1696338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696338</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 15 Apr 2009 15:16:21 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 15:33:17 GMT]]></title><description><![CDATA[<p>Hi rommi,</p>
<p>habe mir gerade noch einmal deinen Code angesehen. SendMessage() geht wohl an das falsche Fenster.</p>
<p>FindWindow() liefert dir das das Handle des Rahmenfensters von Notepad bzw. Winword. Die Textanzeige innerhalb dieses Rahmens ist vermutlich ein untergeordnetes Control (child window.)</p>
<p>Mit dem Tool Spy++ kannst du dir ansehen, wie die Fensterhierarchie der Zielanwendung aufgebaut ist. Das Fensterhandle, daß du für SendMessage() benötigst, kannst du dir dann über den ID oder Klassennamen heraussuchen.</p>
<p>Gruß, VV <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/1696345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696345</guid><dc:creator><![CDATA[VirtualVoid]]></dc:creator><pubDate>Wed, 15 Apr 2009 15:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 17:53:53 GMT]]></title><description><![CDATA[<p>Wenn man an einen fremden Prozess (hier Notepad) mit SendMessage etwas senden will, muss nicht nur das genaue Zielfenster kennen. Darüberhinaus muss man auch wissen, welche Nachrichten die Prozedur dieses Zielfensters verarbeitet. Anderenfalls passiert nichts bzw. wird von Windows geschluckt. Da hilft nur probieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696390</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Wed, 15 Apr 2009 17:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 19:05:17 GMT]]></title><description><![CDATA[<p>Man kann Tastatureingaben nicht mit SendMessage simulieren.<br />
<a href="http://blog.m-ri.de/index.php/2007/12/27/die-unsitte-tastatureingaben-mit-wm_keydown-nachrichten-zu-simulieren/" rel="nofollow">http://blog.m-ri.de/index.php/2007/12/27/die-unsitte-tastatureingaben-mit-wm_keydown-nachrichten-zu-simulieren/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696407</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 15 Apr 2009 19:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 19:16:09 GMT]]></title><description><![CDATA[<p>Hallo VirtualVoid und natürlich alle Anderen,</p>
<p>das war die Lösung. Das wimmelt ja nur so von Fenster mit verschiedenen Namen. Mir is jetzt echt schlecht. Ich hab mich wohl von SendInput und keybd_event ein bisschen beeinflussen lassen. Schliesslich ist es da schitegal wie das Fenster heisst hauptsache es hat den Fokus und schon kannste Tastendrücke senden bis dir schlecht wird. Hmm das muss ich mir noch genauer überlegen ob SendMessage überhaupt für meine Zwecke das Richtige ist. Zumindest arbeitet es auch bei einer gesperrten Maus und Tastatur im Hintergrund (so wie ich es eigentlich wollte). Aber is halt ganz schön aufwendig die ganzen Frames namentlich ausfindig zu machen. Schliesslich will ich ja nicht immer nur an Word und Notepad Tastatur-Inputs senden.</p>
<p>Auf jeden Fall erstmal grossen Dank für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Gruss, rommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696413</guid><dc:creator><![CDATA[rommi]]></dc:creator><pubDate>Wed, 15 Apr 2009 19:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 19:18:37 GMT]]></title><description><![CDATA[<p>Ach ja hätt ich beinahe vergessen! Schönen Dank an den Administrator der meinen verirrten Beitrag ins richtige Forum verschoben hat!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696415</guid><dc:creator><![CDATA[rommi]]></dc:creator><pubDate>Wed, 15 Apr 2009 19:18:37 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 19:29:31 GMT]]></title><description><![CDATA[<p>Hallo Martin Richter,<br />
der Autor dieser Seite schlägt vor SendInput und keybd_event zuverwenden. Das funzt eben nicht bei einer gesperrten Tastatur darum suche ich eben ne Alternative. Aber dass habe ich doch alles geschrieben...</p>
<p>Gruss, rommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696420</guid><dc:creator><![CDATA[rommi]]></dc:creator><pubDate>Wed, 15 Apr 2009 19:29:31 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 20:02:53 GMT]]></title><description><![CDATA[<p>Hi rommi (etc.),</p>
<p>wenn ich mich noch mal zu Wort melden darf...der von Martin Richter verlinkte Text faßt die Sache ja gut zusammen. Es ist natürlich &quot;unzulässig&quot; (im Sinne einer ordentlichen Anwendungsentwicklung), fremde Anwendungen mit simulierten Ereignissen manipulieren zu wollen. Gesetzlich verboten ist es aber nicht, und wenn du Notepad oder Word mal abschießt, ist das ja auch nicht sooo schlimm. Probieren geht über studieren...</p>
<p>Die Makrorekorder, die ich bisher kannte, nehmen *keine* Tastatur- oder Maussperre vor und weisen in der Doku auch darauf hin, daß man während des Makroablaufs besser die Hände vom Gerät läßt. Bei mir hat keybd_event auch immer gut funktioniert. Vielleicht solltest du also ohne Sperre arbeiten.</p>
<p>Word läßt sich übrigens auch über eine eigene Programmierschnittstelle fernsteuern (falls du das vielleicht nicht wissen solltest.)</p>
<p>Gruß, VV <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/1696434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696434</guid><dc:creator><![CDATA[VirtualVoid]]></dc:creator><pubDate>Wed, 15 Apr 2009 20:02:53 GMT</pubDate></item><item><title><![CDATA[Reply to SendMessage und SetActiveWindow on Wed, 15 Apr 2009 22:58:12 GMT]]></title><description><![CDATA[<p>Hi VirtualVoid<br />
Ich möchte nur meine Anwendungen und Arbeitsabläufe auf meinem igenen PC so steuern können wie ich mir dass eben vorstellen (is doch wohl nicht verboten!!). Nicht mehr und nicht weniger. Die handelsüblichen Recorder sind nicht schlecht aber oft nicht mit all den Funktionen ausgestattet die ich wiederum haben möchte. Also möcht ich mir selbst was basteln dass ich auch selbst jederzeit ausbauen oder ändern kann. Is doch n frommer Wunsch, oder? <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>
<p>Ein Problem (genauso wie bei den Recordern) dabei ist eben dass ich auf meinem PC eigentlich schon weiter arbeiten will während mein Programm im Hintergrund (bitte nicht gleich wieder was böses denken) läuft. Erst bei bestimmten Ereignissen sollen Tastatur und Maus z.B. kurzfristig gesperrt werden damit ich den Ablauf nicht durch irgendwelche Tastatur und Mauseingaben störe und evtl. Ereignisse auslöse dich ich nicht haben möchte (sowie bei vielen Recordern). Natürlich könnte ich meine Anwendung gleich auf einem parallel installierten virtuellen Betriebssystem (VMware etc.) ablaufen lassen aber dass möchte ich momentan noch umgehen. Ich denke ich muss mich mal mit dem Thema &quot;Interrupts&quot; auseinander setzen.. Vieleicht komm ich da weiter <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>Huch, is ja schon wieder 1Uhr Nachts! Ich geh jetzt wohin, Gruss rommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696472</guid><dc:creator><![CDATA[rommi]]></dc:creator><pubDate>Wed, 15 Apr 2009 22:58:12 GMT</pubDate></item></channel></rss>