Форум программистов, компьютерный форум CyberForum.ru

Заставить индикаторы клавиатуры мигать - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ itoa(); http://www.cyberforum.ru/cpp-beginners/thread293742.html
вопрос!!! вводится массив элементов типа unsigned char двоичным числом, т.е только 0 и 1... как перевести мое вводимое число в десятичную систему???
C++ Динамический массив Привет всем!Помогите разобратса в задаче по теме МНОГОМЕРНЫЕ ДИНАМИЧЕСКИЕ МАССИВЫ. 1.Напишите функцию для обращения двумерного динамического массива в одномерный. http://www.cyberforum.ru/cpp-beginners/thread293741.html
C++ По теме Строки.
Привет всем! Помогите пожалуйста с задачкой.Никак немогу понять что идет к чему. 1.Написать функцию для замены первых букв во всех словах на прописные буквы.
Индийская легенда C++
НАРОД ПОМОГИТЕ ПЛЗ! ПОДСКАЖИТЕ КАК ВЫВЕСТИ ОЧ БОЛЬШОЕ ЧИСЛО В ЭТОЙ ЗАДАЧЕ НАПРИМЕР ЕСЛИ ВЗЯТЬ 10 ячейку? "О шахматной доске и зернах". Известная индийская легенда утверждает, что когда великий гроссмейстер выиграл у падишаха в награду он попросил положить на первую клетку шахматной доски 1 зерно, на вторую - 2, на третью - 4, на четвертую - 16 и т.д. Опишите программу, содержащую рекурсивную...
C++ Битовые операции http://www.cyberforum.ru/cpp-beginners/thread293724.html
Есть число в двоичной системе, например "01000001", рядом с единицами надо заменить нули на единички! то есть должно получится например "11100011"! Помогите нашкодить!
C++ Непонятная операция в листинге Почему if(s=='.') использует s= на s и что значит ++s мы сдвигаем указатель или что растолкуйте #include <iostream.h> #include <conio.h> #include <stdio.h> int CountLetters(char* s) { if(s=='.') { return 0; подробнее

Показать сообщение отдельно
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
12.05.2011, 18:03  [ТС]     Заставить индикаторы клавиатуры мигать
NNN777, нет, там кое-что другое. Программа ведь эмулирует не только действие но и нажатие клавиши. В общем-то при указании куда в память пихать нажатие (0x45 у NumLock) нужно разбираться. Я же особо не понял от чего этот адрес зависит. Да, там есть коды всех клавиш (Virtual Key Codes) и вроде всё логично, но нет же - 0x45 там то не у намлока, а у одной из букв, а у намлока свой код что меня и сбило с толку.
Хотя это не помешало методом тыка сделать цикл чтобы лампочки хаотично моргали - они выключаются и включаются раз в несколько циклов, а не в один. Почему так - я догадываюсь что в этом регистре состояний куда мы пихаем команды по нажатию клавиш при добавлении нового значения идёт сдвиг старого и код выключения клавиши в итоге "доходит" не сразу (а когда его "подпихнут" новые значения. В общем написал размыто, но думаю понять можно.
Код показывал вот такой:
Код
 #include <windows.h>
 #include <iostream>

   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 SetCapsLock( BOOL bState )
   {
      BYTE keyState[256];

      GetKeyboardState((LPBYTE)&keyState);
      if( (bState && !(keyState[VK_CAPITAL] & 1)) ||
          (!bState && (keyState[VK_CAPITAL] & 1)) )
      {

         keybd_event( VK_CAPITAL,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );


         keybd_event( VK_CAPITAL,
                      0x14,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      }
   }

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

      GetKeyboardState((LPBYTE)&keyState);
      if( (bState && !(keyState[VK_SCROLL] & 1)) ||
          (!bState && (keyState[VK_SCROLL] & 1)) )
      {

         keybd_event( VK_SCROLL,
                      0x91,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );


         keybd_event( VK_SCROLL,
                      0x91,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      }
   }


int main()
{
int count=1000;
do
{
    SetNumLock( TRUE );
    SetCapsLock(TRUE);
    SetScrLock (TRUE);
    SetNumLock( FALSE );
    SetCapsLock(FALSE);
    SetScrLock (FALSE);
    if (count%50==0)
    std::cout<<'\a';
    count--;
}while(count);
return 0;
}
Не сложно догадаться что ни о какой 1000 миганий индикаторов за весь цикл и речи быть не может.
Кстати если зациклить и поставить 1 beep за 1 проход и запустить на более-менее нагруженном пк то ... а смотрите сами, хотя это и так логично
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru