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

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


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


Выпуск № 33-2003 BCBDEV.RU

Здравствуйте уважаемые подписчики!

Перед вами очередной выпуск рассылки "Программирование на WinApi"
Переводы многих функций Win32API, которые часто используются в данной рассылке, вы можете получать, подписавшись на дружественную рассылку "WinAPI на русском".
Справочник по функциям Win32API вы можете посмотреть на сайте BcbDev.ru в разделе MSDN по-русски.

Программное нажатие на клавиши NUM LOCK, CAPS LOCK, и SCROLL LOCK .
Документация для SetKeyboardState () правильно говорит, что вы не можете использовать этот API, чтобы переключить NUM LOCK, CAPS LOCK, и SCROLL LOCK  клавиши. Для этой цели вы можете использовать keybd_event () под Windows NT. Эта же методика работает и в Windows 98? для переключения CAPS LOCK и SCROLL LOCK, но не работает для NUM LOCK.

Следующий пример показывает, как включить лампочку NUM LOCK, если она выключена. Функция SetNumLock, определенная здесь, моделирует нажатие клавиши NUM LOCK, используя keybd_event () с виртуальной клавишей VK_NUMLOCK. Требуется булево значение, которое указывает, должна ли быть выключена лампочка (FALSE) или включена (TRUE). Та же методика может использоваться для клавиши VK_CAPITAL для CAPS LOCK и клавиши VK_SCROLL для SCROLL LOCK.
#include <windows.h>

   void SetNumLock( BOOL bState )
   {
      BYTE keyState[256];

      GetKeyboardState((LPBYTE)&keyState);
      if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
          (!bState && (keyState[VK_NUMLOCK] & 1)) )
      {
      // Эмулируем нажатие на клавишу
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );

      // Эмулируем отжатие клавиши
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      }
   }

   void main()
   {
      SetNumLock( TRUE );
   }

Удачи Вам в Ваших делах Куковинец Андрей aka Juggernaut

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

В избранное