Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на WinApi, C++Builder, Visual C++


Информационный Канал Subscribe.Ru


<xBODY>
<TABLE cellSpacing=1 cellPadding=1 width="99%" align=center border=0 bgColor=black>
  <TR>
    <TD bgColor=#ffffff>
      <TABLE cellSpacing=0 cellPadding=2 width="100%" border=0>
        
        <TR bgColor=#495c89>
          <TD align=left width="50%"><STRONG><FONT size=2><FONT 
            color=#ffffff><FONT face=Arial>Выпуск № 41-2003</FONT></FONT></FONT></STRONG></TD>
          <TD align=right width="50%"><STRONG><FONT size=2><FONT 
            ><A href="http://BCBDEV.ru"><FONT face=Arial color=lemonchiffon>BCBDEV.RU</FONT></A>

        </FONT></FONT></STRONG></TD></TR></TABLE></TD></TR></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=1 width="99%" align=center border=0 id=TABLE1
bgColor=black>
  
  <TR>
    <TD bgColor=#ffffff>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" border=0 
      bgColor=black>
        
        <TR bgColor=#dddddd>
          <TD align=left>
            <P><STRONG>Здравствуйте уважаемые 
            подписчики!</STRONG>    
          </P></TD></TR></TABLE>Перед вами 
      очередной выпуск рассылки "Программирование на WinApi" <BR>Переводы многих
функций Win32API, которые часто используются 
      в данной рассылке,&nbsp;вы можете получать, подписавшись на дружественную

      рассылку "<A 
      href="http://subscribe.ru/catalog/comp.soft.prog.winapi19743"; target=_blank>WinAPI
на 
      русском</A>". <BR>Справочник по функциям Win32API вы 
      можете посмотреть на сайте <A 
      href="http://BCBDEV.ru">BcbDev.ru</A>; в разделе <A 
      href="http://www.bcbdev.ru/msdn/index.php"; target=_blank>MSDN 
      по-русски</A>.        
        
           
      </TD></TR></TABLE><BR>
<TABLE id=TABLE1 cellSpacing=1 cellPadding=1 width="99%" align=center 
bgColor=black border=0>
  
  <TR>
    <TD bgColor=#ffffff>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=black border=0>
        
        <TR bgColor=#dddddd>
          <TD align=left><STRONG>Как виртуально нажать на 
            клавишу?</STRONG>    
                 
              
             </TD></TR></TABLE>Иногда необходимо нажать на кнопку 
      виртуально. Например, примерно так работают автоматические переключатели

      раскладок (типа punto switcher&nbsp;(ну это я так предполагаю)). Ниже 
      приведены некоторые примеры, позволяющие это проделать.<BR><STRONG>Вариант
1:</STRONG> <PRE><FONT color=#000000>KEYBDINPUT ki;
ki</FONT><FONT color=#ff0000>.</FONT><FONT color=#000000>wVk </FONT><FONT color=#ff0000>=
</FONT><FONT color=#000000>VK_RETURN;
ki</FONT><FONT color=#ff0000>.</FONT><FONT color=#000000>wScan </FONT><FONT color=#ff0000>=
</FONT><FONT color=#000000>MapVirtualKeyEx(VK_RETURN, 0, GetKeyboardLayout(0));
ki</FONT><FONT color=#ff0000>.</FONT><FONT color=#000000>dwFlags </FONT><FONT
color=#ff0000>= </FONT><FONT color=#000000>KEYEVENTF_EXTENDEDKEY; </FONT><FONT
color=#008080>// или KEYEVENTF_KEYUP, одно из этого должно сработать :)
</FONT><FONT color=#000000>ki</FONT><FONT color=#ff0000>.</FONT><FONT color=#000000>time
</FONT><FONT color=#ff0000>= </FONT><FONT color=#000000>0;
ki</FONT><FONT color=#ff0000>.</FONT><FONT color=#000000>dwExtraInfo </FONT><FONT
color=#ff0000>= </FONT><FONT color=#000000>0;
INPUT ipEvent;
ipEvent</FONT><FONT color=#ff0000>.</FONT><FONT color=#000000>type </FONT><FONT
color=#ff0000>= </FONT><FONT color=#000000>INPUT_KEYBOARD;
ipEvent</FONT><FONT color=#ff0000>.</FONT><FONT color=#000000>ki </FONT><FONT
color=#ff0000>= </FONT><FONT color=#000000>ki;
UINT nNumEvents </FONT><FONT color=#ff0000>= </FONT><FONT color=#000000>SendInput(1,
</FONT><FONT color=#ff0000>&amp;</FONT><FONT color=#000000>ipEvent, <B></FONT><FONT
color=#0000ff>sizeof</B></FONT><FONT color=#000000>(INPUT)); </FONT></PRE><STRONG>
  
Вариант 2:<BR></STRONG>Вы должны получить дескриптор окна и 
      затем послать сообщения WM_KEYDOWN и WM_KEYUP&nbsp;следующим образом:<PRE><FONT
color=#000000>SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
SendMessage(hWnd, WM_KEYUP, VK_RETURN, 0); </FONT></PRE>          
<STRONG>Вариант 3</STRONG>:<BR>              
                
          
Посылаем 
      комбинацию ALT+SPACE в текущее окно с фокусом<PRE> <FONT color=#000000>keybd_event(VK_MENU,
0, 0, 0);
 keybd_event(VK_SPACE, 0, 0, 0);
 keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
 keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); </FONT></PRE>
<STRONG>Вариант 4:</STRONG><BR>              
                
          
Этот 
      пример для консольного окна. Печатает "CLS" затем нажимает ENTER.<PRE><B><FONT
color=#0000ff>char </B></FONT><FONT color=#000000>sc </FONT><FONT color=#ff0000>=
</FONT><FONT color=#000000>0;

 sc </FONT><FONT color=#ff0000>= </FONT><FONT color=#000000>MapVirtualKey(</FONT><FONT
color=#008080>/*VK_C*/</FONT><FONT color=#000000>0x43, 0);
 SendMessage(hWnd, WM_KEYDOWN, sc, 1 </FONT><FONT color=#ff0000>| </FONT><FONT
color=#000000>(1 </FONT><FONT color=#ff0000>&lt;&lt; </FONT><FONT color=#000000>30)
</FONT><FONT color=#ff0000>| </FONT><FONT color=#000000>(sc </FONT><FONT color=#ff0000>&lt;&lt;
</FONT><FONT color=#000000>16));
 SendMessage(hWnd, WM_KEYUP, sc, 1 </FONT><FONT color=#ff0000>| </FONT><FONT
color=#000000>(3 </FONT><FONT color=#ff0000>&lt;&lt; </FONT><FONT color=#000000>30)
</FONT><FONT color=#ff0000>| </FONT><FONT color=#000000>(sc </FONT><FONT color=#ff0000>&lt;&lt;
</FONT><FONT color=#000000>16));

 sc </FONT><FONT color=#ff0000>= </FONT><FONT color=#000000>MapVirtualKey(</FONT><FONT
color=#008080>/*VK_L*/</FONT><FONT color=#000000>0x4c, 0);
 SendMessage(hWnd, WM_KEYDOWN, sc, 1 </FONT><FONT color=#ff0000>| </FONT><FONT
color=#000000>(1 </FONT><FONT color=#ff0000>&lt;&lt; </FONT><FONT color=#000000>30)
</FONT><FONT color=#ff0000>| </FONT><FONT color=#000000>(sc </FONT><FONT color=#ff0000>&lt;&lt;
</FONT><FONT color=#000000>16));
 SendMessage(hWnd, WM_KEYUP, sc, 1 </FONT><FONT color=#ff0000>| </FONT><FONT
color=#000000>(3 </FONT><FONT color=#ff0000>&lt;&lt; </FONT><FONT color=#000000>30)
</FONT><FONT color=#ff0000>| </FONT><FONT color=#000000>(sc </FONT><FONT color=#ff0000>&lt;&lt;
</FONT><FONT color=#000000>16));

 sc </FONT><FONT color=#ff0000>= </FONT><FONT color=#000000>MapVirtualKey(</FONT><FONT
color=#008080>/*VK_S*/</FONT><FONT color=#000000>0x53, 0);
 SendMessage(hWnd, WM_KEYDOWN, sc, 1 </FONT><FONT color=#ff0000>| </FONT><FONT
color=#000000>(1 </FONT><FONT color=#ff0000>&lt;&lt; </FONT><FONT color=#000000>30)
</FONT><FONT color=#ff0000>| </FONT><FONT color=#000000>(sc </FONT><FONT color=#ff0000>&lt;&lt;
</FONT><FONT color=#000000>16));
 SendMessage(hWnd, WM_KEYUP, sc, 1 </FONT><FONT color=#ff0000>| </FONT><FONT
color=#000000>(3 </FONT><FONT color=#ff0000>&lt;&lt; </FONT><FONT color=#000000>30)
</FONT><FONT color=#ff0000>| </FONT><FONT color=#000000>(sc </FONT><FONT color=#ff0000>&lt;&lt;
</FONT><FONT color=#000000>16));

 sc </FONT><FONT color=#ff0000>= </FONT><FONT color=#000000>MapVirtualKey(VK_RETURN,
0);
 SendMessage(hWnd, WM_KEYDOWN, sc, 1 </FONT><FONT color=#ff0000>| </FONT><FONT
color=#000000>(1 </FONT><FONT color=#ff0000>&lt;&lt; </FONT><FONT color=#000000>30)
</FONT><FONT color=#ff0000>| </FONT><FONT color=#000000>(sc </FONT><FONT color=#ff0000>&lt;&lt;
</FONT><FONT color=#000000>16));
 SendMessage(hWnd, WM_KEYUP, sc, 1 </FONT><FONT color=#ff0000>| </FONT><FONT
color=#000000>(3 </FONT><FONT color=#ff0000>&lt;&lt; </FONT><FONT color=#000000>30)
</FONT><FONT color=#ff0000>| </FONT><FONT color=#000000>(sc </FONT><FONT color=#ff0000>&lt;&lt;
</FONT><FONT color=#000000>16)); </FONT></PRE>              
                
          
</TD></TR></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=1 width="99%" align=center bgColor=black 
border=0>
  
  <TR>
    <TD bgColor=#ffffff>
      <TABLE cellSpacing=0 cellPadding=2 width="100%" border=0>
        
        <TR bgColor=#495c89>
          <TD align=left width="50%"><FONT><FONT><FONT><FONT 
            color=lemonchiffon>Удачи Вам в Ваших делах</FONT> 
            </FONT></FONT></FONT></TD>
          <TD align=right width="50%"><A 
            href="mailto:jugger@mail.ru"><FONT color=lemonchiffon>Куковинец Андрей
aka 
            Juggernaut</FONT></A> 
              
</TD></TR></TABLE></TD></TR></TABLE>

<x/BODY>

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное