<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=2304761</guid>
        <pubDate>Sat, 04 Jul 2009 17:36:13 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=2304761</link>
        <description><![CDATA[GrinjaRus: Всем доброе время суток.<br>
У меня такой вопрос.<br>
<br>
Нужно симулировать нажатие [ENTER] во внешней апликации, когда апликация не имеет фокуса.<br>
<br>
Когда сам нажимаю [ENTER] и смотрю через Spy то вижу следуюшее три строчки <br>
<br>
&lt;0001&gt; 01160386 P WM_KEYDOWN nVirtKey: VK_RETURN <strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">cRepeat:1 ScanCode:1C </span></strong>fExtended:0 fAltDown:0 fRepeat:0 fUp:0  [wParam:0000000D <strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">lParam:001C0001</span></strong>]<br>
&lt;0002&gt; 01160386 P WM_CHAR chCharCode:&quot;(13) <strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">cRepeat:1 ScanCode:1C </span></strong>fExtended:0 fAltDown:0 fRepeat:0 fUp:0  [wParam:0000000D <strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">lParam:001C0001</span></strong>]<br>
&lt;0003&gt; 01160386 P WM_KEYUP nVirtKey: VK_RETURN <strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">cRepeat:1 ScanCode:1C </span></strong>fExtended:0 fAltDown:0 <strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">fRepeat:1 fUp:1</span></strong>  [wParam:0000000D <strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">lParam:C01C0001</span></strong>]<br>
<br>
<br>
Вот мой код.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Const VK_RETURN = &amp;HD</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Const WM_KEYDOWN = &amp;H100</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Const WM_KEYUP = &amp;H101</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Const WM_CHAR = &amp;H102</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result = SendMessage(WindhWnd, WM_KEYDOWN, VK_RETURN, &amp;H1C0001)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result = SendMessage(WindhWnd, WM_CHAR, VK_RETURN, 1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result = SendMessage(WindhWnd, WM_KEYUP, VK_RETURN, &amp;H1C0001)</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
И это код даёт следуюший результат Spy (как такового нажатия не происходит)<br>
<br>
&lt;0001&gt; 01160386 S WM_KEYDOWN nVirtKey: VK_RETURN <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">cRepeat:62206 ScanCode:13</span></strong> fExtended:0 fAltDown:0 fRepeat:0 fUp:0  [wParam:0000000D <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">lParam:0013F304</span></strong>]<br>
&lt;0002&gt; 01160386 R WM_KEYDOWN lResult:00000001<br>
&lt;0003&gt; 01160386 S WM_CHAR chCharCode:&quot;(13) <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">cRepeat:62206 ScanCode:13 </span></strong>fExtended:0 fAltDown:0 fRepeat:0 fUp:0  [wParam:0000000D <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">lParam:0013F2FE</span></strong>]<br>
&lt;0004&gt; 01160386 R WM_CHAR lResult:00000000<br>
&lt;0005&gt; 01160386 S WM_KEYUP nVirtKey: VK_RETURN <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">cRepeat:62212 ScanCode:13</span> </strong>fExtended:0 fAltDown:0 <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">fRepeat:0 fUp:0</span></strong>  [wParam:0000000D <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">lParam:0013F304</span></strong>]<br>
&lt;0006&gt; 01160386 R WM_KEYUP lResult:00000000<br>
<br>
<br>
Вопрос 1)Сразу видно что я напортачил с lParam.<br>
Неподскажите как его высчитывать.<br>
<br>
Вопрос 2) Что обозначают след буквы P S R (Spy)<br>
Могу предположить PostMessage SendMessage Result]]></description>
        <author>GrinjaRus</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555974</guid>
        <pubDate>Mon, 07 May 2007 16:21:57 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555974</link>
        <description><![CDATA[neooleg: Hryak - гений&#33; Код работает.]]></description>
        <author>neooleg</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555890</guid>
        <pubDate>Mon, 07 May 2007 14:50:40 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555890</link>
        <description><![CDATA[Hryak: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=184180&view=findpost&p=1555407'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Duke Nuken &#064; <time class="tag-quote__quoted-time" datetime="2007-05-07T08:30:44+00:00">07.05.07, 08:30</time></span><div class='quote '>Я тоже заметил этот побочный эффект :) <br>
Но ты можеш мне показать WM_CHAR в коде?<br>
Почему он происходит</div></div><br>
Блин, последний мой пост в данной ветке.  &gt;:( Я тут для кого распиняюсь? Не посмотреть было про упомянутую TranslateMessage() ?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>MSDN: TranslateMessage</span><div class='quote '><strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red"><span class='tag-size' data-value='21' style='font-size:21pt;'>WM_KEYDOWN and WM_KEYUP combinations produce a WM_CHAR or WM_DEADCHAR message. </span></span></strong></div></div><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>а выделение текста не отрабатывает </div></div><br>
С аккселераторами, которые с клавишами-модификаторами, дополнительная фишка - посылки PostMessage недостаточно, нужно еще дополнительно обновить &quot;keyboard input-state table&quot; в нужном потоке.<br>
Вот такой код может сработать (закомментарены те части, без которых генерация аккселератора тоже произойдет). Разбирайся сам, раз не желаешь слушать.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;if (h != NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HWND child = ::FindWindowEx(h,NULL,&quot;Edit&quot;, NULL);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_Ctrl1 = ::MapVirtualKey(VK_CONTROL, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_A1 = ::MapVirtualKey((int)&#39;A&#39;, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_A2 = 1 &#60;&#60; 31 | 1 &#60;&#60; 30 | ::MapVirtualKey((int)&#39;A&#39;, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_Ctrl2 = 1 &#60;&#60; 31 | 1 &#60;&#60; 30 | ::MapVirtualKey(VK_CONTROL, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;DWORD pid;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;DWORD tid = GetWindowThreadProcessId(child, &amp;pid);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, pid);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//Ctrl + A</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;AttachThreadInput(GetCurrentThreadId(), tid, TRUE);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_Ctrl = ::PostMessage(child, WM_KEYDOWN, VK_CONTROL, lparam_Ctrl1 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WaitForInputIdle(hProc, INFINITE);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BYTE state[256];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GetKeyboardState(state);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;state[VK_CONTROL] = 0x80;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetKeyboardState(state);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_A = ::PostMessage(child, WM_KEYDOWN, (int)&#39;A&#39;, lparam_A1 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WaitForInputIdle(hProc, INFINITE);</div><div class="code_line">/*</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GetKeyboardState(state);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;state[&#39;A&#39;] = 0x80;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetKeyboardState(state);</div><div class="code_line">*/</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl2_A = ::PostMessage(child, WM_KEYUP, (int)&#39;A&#39;, lparam_A2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WaitForInputIdle(hProc, INFINITE);</div><div class="code_line">/*</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GetKeyboardState(state);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;state[&#39;A&#39;] = 0x0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetKeyboardState(state);</div><div class="code_line">*/</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl2_Ctrl = ::PostMessage(child, WM_KEYUP, VK_CONTROL, lparam_Ctrl2); &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WaitForInputIdle(hProc, INFINITE);</div><div class="code_line">/*</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GetKeyboardState(state);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;state[VK_CONTROL] = 0x0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetKeyboardState(state);</div><div class="code_line">*/</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;AttachThreadInput(GetCurrentThreadId(), tid, FALSE);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div>]]></description>
        <author>Hryak</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555597</guid>
        <pubDate>Mon, 07 May 2007 11:02:46 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555597</link>
        <description><![CDATA[neooleg: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=184180&view=findpost&p=1555446'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>evGenius &#064; <time class="tag-quote__quoted-time" datetime="2007-05-07T09:09:32+00:00">07.05.07, 09:09</time></span><div class='quote '>Акселератор не срабатывает, поэтому и WM_KEYDOWN + WM_KEYUP преобразуются в WM_CHAR. Если послать сообщение напрямую с ID=25, то все происходит.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;HWND h = ::FindWindow(NULL, L&quot;Безымянный - Блокнот&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (h != NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_Ctrl = ::PostMessage(h, WM_COMMAND, 0x10019, 0x0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div></div></div><br>
Не знаю. У меня не работает, хотя идея вроде как правильная.]]></description>
        <author>neooleg</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555446</guid>
        <pubDate>Mon, 07 May 2007 09:09:32 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555446</link>
        <description><![CDATA[evGenius: Акселератор не срабатывает, поэтому и WM_KEYDOWN + WM_KEYUP преобразуются в WM_CHAR. Если послать сообщение напрямую с ID=25, то все происходит.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;HWND h = ::FindWindow(NULL, L&quot;Безымянный - Блокнот&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (h != NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_Ctrl = ::PostMessage(h, WM_COMMAND, 0x10019, 0x0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div>]]></description>
        <author>evGenius</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555407</guid>
        <pubDate>Mon, 07 May 2007 08:30:44 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555407</link>
        <description><![CDATA[Duke Nuken: Я тоже заметил этот побочный эффект :) <br>Но ты можеш мне показать WM_CHAR в коде?<br>Почему он происходит, а выделение текста не отрабатывает - вот в чем загадка.<br><br>Да Spy++ смотрел - один в один с клавиатурой.<br>Я подозреваю там еще какието события нужно посылать чтобы заработало.]]></description>
        <author>Duke Nuken</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555346</guid>
        <pubDate>Mon, 07 May 2007 07:26:48 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555346</link>
        <description><![CDATA[neooleg: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=184180&view=findpost&p=1555343'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Duke Nuken &#064; <time class="tag-quote__quoted-time" datetime="2007-05-07T07:20:44+00:00">07.05.07, 07:20</time></span><div class='quote '>Вау. Я проникся. А вообще поработав с С# 2 года похоже тупееш :) <br>
Вот накидал сообщения для Alt + A (выдедение текста в блокноте)<br>
и оно в точности повторяет то что происходит при нажатии с клавиатуры,<br>
за отличием одного - не работает. В чем подвох?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;HWND h = ::FindWindow(NULL, L&quot;1.txt - Notepad&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (h != NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HWND child = ::FindWindowEx(h,NULL,L&quot;Edit&quot;, NULL);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_Ctrl1 = ::MapVirtualKey(VK_CONTROL, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_A1 = ::MapVirtualKey((int)&#39;A&#39;, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_A2 = 1 &#60;&#60; 31 | 1 &#60;&#60; 30 | ::MapVirtualKey((int)&#39;A&#39;, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_Ctrl2 = 1 &#60;&#60; 31 | 1 &#60;&#60; 30 | ::MapVirtualKey(VK_CONTROL, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//Ctrl + A</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_Ctrl = ::PostMessage(child, WM_KEYDOWN, VK_CONTROL, lparam_Ctrl1 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_A = ::PostMessage(child, WM_KEYDOWN, (int)&#39;A&#39;, lparam_A1 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl2_A = ::PostMessage(child, WM_KEYUP, (int)&#39;A&#39;, lparam_A2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl2_Ctrl = ::PostMessage(child, WM_KEYUP, VK_CONTROL, lparam_Ctrl2); &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div></div></div><br>
И что Spy`ем смотрел - один в один с клавиатурой? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-05-07T07:42:14+00:00">07.05.07, 07:42</time></span></span><br>
Более того - у меня даже после твоих сообщений посылает WM_CHAR&#33;&#33;&#33;]]></description>
        <author>neooleg</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555343</guid>
        <pubDate>Mon, 07 May 2007 07:20:44 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555343</link>
        <description><![CDATA[Duke Nuken: Вау. Я проникся. А вообще поработав с С# 2 года похоже тупееш :) <br>
Вот накидал сообщения для Alt + A (выдедение текста в блокноте)<br>
и оно в точности повторяет то что происходит при нажатии с клавиатуры,<br>
за отличием одного - не работает. В чем подвох?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;HWND h = ::FindWindow(NULL, L&quot;1.txt - Notepad&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (h != NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HWND child = ::FindWindowEx(h,NULL,L&quot;Edit&quot;, NULL);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_Ctrl1 = ::MapVirtualKey(VK_CONTROL, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_A1 = ::MapVirtualKey((int)&#39;A&#39;, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_A2 = 1 &#60;&#60; 31 | 1 &#60;&#60; 30 | ::MapVirtualKey((int)&#39;A&#39;, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam_Ctrl2 = 1 &#60;&#60; 31 | 1 &#60;&#60; 30 | ::MapVirtualKey(VK_CONTROL, 0) &#60;&#60; 16 | 1 ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//Ctrl + A</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_Ctrl = ::PostMessage(child, WM_KEYDOWN, VK_CONTROL, lparam_Ctrl1 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_A = ::PostMessage(child, WM_KEYDOWN, (int)&#39;A&#39;, lparam_A1 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl2_A = ::PostMessage(child, WM_KEYUP, (int)&#39;A&#39;, lparam_A2);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl2_Ctrl = ::PostMessage(child, WM_KEYUP, VK_CONTROL, lparam_Ctrl2); &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div>]]></description>
        <author>Duke Nuken</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555241</guid>
        <pubDate>Mon, 07 May 2007 05:50:56 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555241</link>
        <description><![CDATA[Hryak: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=184180&view=findpost&p=1555227'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Duke Nuken &#064; <time class="tag-quote__quoted-time" datetime="2007-05-07T05:40:50+00:00">07.05.07, 05:40</time></span><div class='quote '>непонятно почему выглядят именно так.</div></div><br>
Чего именно не понятно?<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>lParam<br>
Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table. <br>
0-15<br>
Specifies the repeat count for the current message. The value is the number of times the keystroke is autorepeated as a result of the user holding down the key. If the keystroke is held long enough, multiple messages are sent. However, the repeat count is not cumulative.<br>
16-23<br>
Specifies the scan code. The value depends on the OEM.<br>
24<br>
Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.<br>
25-28<br>
Reserved; do not use.<br>
29<br>
Specifies the context code. The value is always 0 for a WM_KEYDOWN message.<br>
30<br>
Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is zero if the key is up.<br>
31<br>
Specifies the transition state. The value is always zero for a WM_KEYDOWN message.</div></div>]]></description>
        <author>Hryak</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555227</guid>
        <pubDate>Mon, 07 May 2007 05:40:50 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1555227</link>
        <description><![CDATA[Duke Nuken: Вау. ты прав. Работает и приходят корректные сообщения.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;HWND h = ::FindWindow(NULL, L&quot;1.txt - Notepad&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (h != NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HWND child = ::FindWindowEx(h,NULL,L&quot;Edit&quot;, NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl = ::SendMessage(child, WM_CHAR, (int)&#39;D&#39;, 1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam1 = ::MapVirtualKey(VK_F5, 0) &#60;&#60; 16 | 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT lparam2 = 1 &#60;&#60; 31 | 1 &#60;&#60; 30 | MapVirtualKey(VK_F5, 0) &#60;&#60; 16 | 1;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_F5 = ::PostMessage(child, WM_KEYDOWN, VK_F5, lparam1 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl2_F5 = ::PostMessage(child, WM_KEYUP, VK_F5, lparam2);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><br>
<br>
Можно узнать что это за шаманство с lparam1 и lparam2 ? Тоесть они дают правельный результат <br>
но непонятно почему выглядят именно так.]]></description>
        <author>Duke Nuken</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554758</guid>
        <pubDate>Sun, 06 May 2007 12:19:12 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554758</link>
        <description><![CDATA[Hryak: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=184180&view=findpost&p=1554740'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Duke Nuken &#064; <time class="tag-quote__quoted-time" datetime="2007-05-06T11:42:38+00:00">06.05.07, 11:42</time></span><div class='quote '>Могу я узнать как правильно заполнить событие? <br>
Что нужно поставить в lParam чтобы получить lParam = 003F0001</div></div><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">MapVirtualKey(VK_F5, 0) &#60;&#60; 16 | 1;</div></ol></div></div></div></div><br>
Для WM_KEYUP:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">1 &#60;&#60; 31 | 1 &#60;&#60; 30 | MapVirtualKey(VK_F5, 0) &#60;&#60; 16 | 1;</div></ol></div></div></div></div><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Изначальная проблемма какраз и заключалась в том что немогу понять принципа <br>
заполнения. Тоесть как сделать чтобы работал SendMessage?</div></div><br>
При чём тут <em class='tag-i'>&quot;тоесть&quot;</em>?  :blink: Я же объяснил - через SendMessage работать не будет.]]></description>
        <author>Hryak</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554740</guid>
        <pubDate>Sun, 06 May 2007 11:42:38 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554740</link>
        <description><![CDATA[Duke Nuken: to Hryak<br><br>Могу я узнать как правильно заполнить событие? <br>Что нужно поставить в lParam чтобы получить lParam = 003F0001<br>Событие с такими параметрами происходит при нажатии на виндовый блокнот F5.<br>Изначальная проблемма какраз и заключалась в том что немогу понять принципа <br>заполнения. Тоесть как сделать чтобы работал SendMessage?]]></description>
        <author>Duke Nuken</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554732</guid>
        <pubDate>Sun, 06 May 2007 11:23:52 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554732</link>
        <description><![CDATA[Hryak: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=184180&view=findpost&p=1554727'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Duke Nuken &#064; <time class="tag-quote__quoted-time" datetime="2007-05-06T11:13:13+00:00">06.05.07, 11:13</time></span><div class='quote '>Но факт, оно отрабатывает. Почему непонятно.</div></div><br>
Потому что не все поля в lParam одинаково критичны для обработки сообщения. Но надежнее заполнять правильно, конечно.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Скажите как сделать собитие Alt + V ? </div></div><br>
Последовательно четыре события сгенерить - нажатие Alt, нажатие V, отпускание V, отпускание Alt.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>И почему работает только в Post Message варианте?</div></div><br>
Потому что сообщение это изначально должно обрабатываться в цикле выборки сообщений (должно попасть в TranslateMessage). Посланное же через SendMessage оно проскакивает напрямую в окно.]]></description>
        <author>Hryak</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554727</guid>
        <pubDate>Sun, 06 May 2007 11:13:13 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554727</link>
        <description><![CDATA[Duke Nuken: Вы правы. C PostMessage работает. <br>
При нажатии на клавиатуре происходит событие WM_KEYDOWN wParam = 00000074 и lParam = 003F0001<br>
при отправлении <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">LRESULT pl1_F5 = ::PostMessage(child, WM_KEYDOWN, VK_F5, 0 );</div></ol></div></div></div></div><br>
WM_KEYDOWN wParam = 00000074 и lParam = 00000000<br>
<br>
Так эти события показывает Spy++. Но факт, оно отрабатывает. Почему непонятно.<br>
Скажите как сделать собитие Alt + V ? И почему работает только в Post Message варианте?]]></description>
        <author>Duke Nuken</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554725</guid>
        <pubDate>Sun, 06 May 2007 11:10:36 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554725</link>
        <description><![CDATA[Hryak: Ошибаешься.]]></description>
        <author>Hryak</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554720</guid>
        <pubDate>Sun, 06 May 2007 10:57:41 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554720</link>
        <description><![CDATA[Duke Nuken: Если не ошибаюсь то разница между PostMessage и SendMessage <br>в том когда отдаеться управление. Если да то какую именно функцию юзать неважно.]]></description>
        <author>Duke Nuken</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554652</guid>
        <pubDate>Sun, 06 May 2007 08:44:59 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554652</link>
        <description><![CDATA[neooleg: То что тебе нужно:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">PostMessage( hEdit, WM_KEYDOWN, VK_F5, 0 );</div><div class="code_line">PostMessage( hEdit, WM_KEYUP, VK_F5, 0 );</div></ol></div></div></div></div><br>
У меня все четко работает. В твоей задачи, как видно можно обойтись и без LPARAM. Но, по-хорошему, конечно, его нужно заполнить&#33;<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>что это за цифры 0-15, 16-23, 24, и тп.<br>
</div></div><br>
Это биты LPARAM`а.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Немогу понять как его правильно заполнить? <br>
</div></div><br>
заполняется при помощи побитовых операций &gt;&gt;, &lt;&lt;, |, &amp;. Не так уж и сложно, только нужно верно маску составить.<br>
З.Ы. Если не сможешь сам, пиши, я сделаю&#33; <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-05-06T08:56:16+00:00">06.05.07, 08:56</time></span></span><br>
Често не хотел, украсть пост уважаемого Hryak. Но когда свой писал, его поста еще не было, извените, коль что не так&#33;]]></description>
        <author>neooleg</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554651</guid>
        <pubDate>Sun, 06 May 2007 08:42:49 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554651</link>
        <description><![CDATA[Hryak: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=184180&view=findpost&p=1554574'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Duke Nuken &#064; <time class="tag-quote__quoted-time" datetime="2007-05-06T05:48:44+00:00">06.05.07, 05:48</time></span><div class='quote '>Немогу понять как его правильно заполнить? что это за цифры 0-15, 16-23, 24, и тп.</div></div><br>
Это номера битов в lParam. Заполнять обычно - через | и &lt;&lt; или через битовые поля.<br>
P.S. Вместо SendMessage юзай PostMessage]]></description>
        <author>Hryak</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554636</guid>
        <pubDate>Sun, 06 May 2007 08:19:48 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554636</link>
        <description><![CDATA[neooleg: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=184180&view=findpost&p=1554628'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Duke Nuken &#064; <time class="tag-quote__quoted-time" datetime="2007-05-06T07:52:54+00:00">06.05.07, 07:52</time></span><div class='quote '>Спасибо конечно. Но это не то что я искал.</div></div><br>
А что, тебе нужно послать определенному приложению?]]></description>
        <author>neooleg</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554628</guid>
        <pubDate>Sun, 06 May 2007 07:52:54 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554628</link>
        <description><![CDATA[Duke Nuken: Спасибо конечно. Но это не то что я искал.]]></description>
        <author>Duke Nuken</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554576</guid>
        <pubDate>Sun, 06 May 2007 05:53:03 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554576</link>
        <description><![CDATA[neooleg: Я может нужно keybd_event() юзать, вот тебе пример из MSDN:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;#include &#60;windows.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;void SetNumLock( BOOL bState )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;BYTE keyState[256];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;GetKeyboardState((LPBYTE)&amp;keyState);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if( (bState &amp;&amp; !(keyState[VK_NUMLOCK] &amp; 1)) ||</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(!bState &amp;&amp; (keyState[VK_NUMLOCK] &amp; 1)) )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;// Simulate a key press</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; keybd_event( VK_NUMLOCK,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x45,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;KEYEVENTF_EXTENDEDKEY | 0,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;// Simulate a key release</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; keybd_event( VK_NUMLOCK,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x45,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; void main()</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetNumLock( TRUE );</div><div class="code_line">&nbsp;&nbsp; }</div></ol></div></div></div></div>]]></description>
        <author>neooleg</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554574</guid>
        <pubDate>Sun, 06 May 2007 05:48:44 +0000</pubDate>
        <title>WM_KEYDOWN</title>
        <link>https://forum.sources.ru/index.php?showtopic=184180&amp;view=findpost&amp;p=1554574</link>
        <description><![CDATA[Duke Nuken: Доброго времени суток.<br>
<br>
Интересует помощь от спецов по отправке виндовых сообщений.<br>
Есть приложение и оно находит хендл окна и посылает ему нажатие <br>
клавиши F5. Для нажатия посылаеться WM_KEYDOWN и затем WM_KEYUP<br>
<br>
в MSDN на WM_KEYDOWN содержиться такая инфа<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
wParam<br>
Specifies the virtual-key code of the nonsystem key. <br>
lParam<br>
Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table. <br>
0-15<br>
Specifies the repeat count for the current message. The value is the number of times the keystroke is autorepeated as a result of the user holding down the key. If the keystroke is held long enough, multiple messages are sent. However, the repeat count is not cumulative.<br>
16-23<br>
Specifies the scan code. The value depends on the OEM.<br>
24<br>
Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.<br>
25-28<br>
Reserved; do not use.<br>
29<br>
Specifies the context code. The value is always 0 for a WM_KEYDOWN message.<br>
30<br>
Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is zero if the key is up.<br>
31<br>
Specifies the transition state. The value is always zero for a WM_KEYDOWN message.<br>
</div></div><br>
<br>
Тоесть в фенкцию отправки сообщений ставлю<br>
SendMessage([хендл], WM_KEYDOWN, VK_F5, 1);<br>
<br>
И нажатия не происходит. Судя по всему что не правильно указан LPARAM<br>
Немогу понять как его правильно заполнить? что это за цифры 0-15, 16-23, 24, и тп.<br>
Как их в сунуть в параметр?<br>
<br>
Вот код который я юзаю.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;HWND h = ::FindWindow(NULL, L&quot;1.txt - Notepad&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (h != NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HWND child = ::FindWindowEx(h,NULL,L&quot;Edit&quot;, NULL);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl = ::SendMessage(child, WM_CHAR, (int)&#39;D&#39;, 1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// F5</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl1_F5 = ::SendMessage(child, WM_KEYDOWN, VK_F5, 1 | 16 | 0 | 0 | 0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LRESULT pl2_F5 = ::SendMessage(child, WM_KEYUP, VK_F5, 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div>]]></description>
        <author>Duke Nuken</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      </channel>
      </rss>
	