Страница 2 из 3

Re: статус клавиш num, caps и scroll lock

Добавлено: 22 апр 2008, 09:41
BBB
Alex_Burn писал(а):Хм...
а ваш код тоже под винду не пашет?
А то созданная программа никак не влияет на индикаторы клавы. :(
Попробовал под Win2000 - не "зажигает". Под Win98 - нормально отрабатывает.

Может, под виндами в таком случае через WinAPI, через SetKeyboardState? (Не знаю, насколько необходимо сделать это все через ассемблер).

keybd_event

Добавлено: 22 апр 2008, 09:47
BBB
В MSDN-е в описании ф-ии keybd_event наткнулся на пример, который как раз переключает NUM LOCK.

Код: Выделить всё

[b]Example Code[/b]
The following sample program toggles the NUM LOCK light by using keybd_event() 
with a virtual key of VK_NUMLOCK. It takes a Boolean value that indicates whether the 
light should be turned off (FALSE) or on (TRUE). The same technique can be used for 
the CAPS LOCK key (VK_CAPITAL) and the SCROLL LOCK key (VK_SCROLL). 

  #include <windows.h>

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

      GetKeyboardState((LPBYTE)&keyState);
      if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
          (!bState && (keyState[VK_NUMLOCK] & 1)) )
      {
      // Simulate a key press
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );

      // Simulate a key release
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      }
   }

   void main()
   {
      SetNumLock( TRUE );
   }
А, вот еще примечание для keybd_event:
Windows NT/2000/XP: This function has been superseded. Use SendInput instead.

Re: статус клавиш num, caps и scroll lock

Добавлено: 22 апр 2008, 13:39
Alex_Burn
&quot писал(а): Не знаю, насколько необходимо сделать это все через ассемблер
Ну желательно конечн в АСМе
&quot писал(а):Под Win98 - нормально отрабатывает.
Где же я 98-ю Винду-то возьму?.. :(

Пардон за тупой вопрос, но как проги из под DOS запускать? (Просто я этого никогда не делал)

Re: статус клавиш num, caps и scroll lock

Добавлено: 22 апр 2008, 14:17
BBB
Alex_Burn писал(а):Пардон за тупой вопрос, но как проги из под DOS запускать? (Просто я этого никогда не делал)
Вопрос не совсем ясен. Уточните.

Re: статус клавиш num, caps и scroll lock

Добавлено: 22 апр 2008, 14:43
Alex_Burn
Ну, г-н airyashov писал что прога пашет под чистый DOS.

Вот я и подумал, возможно ли не запускать винду, а заходить через DOS (в смысле, через загрузочную дискету, если, конечно данное действие возможно)

Я пытался решить данную проблему следующим путем:

Скачал эмулятор DOS. Но он почему-то не работает. Можно работать только на виртуальной дискете, а на HDD заходить не хочет, говорит что-то типа 'Invalid Drive C:'. Правда я пытался эмулировать DOS на ноуте, где у меня гибкого дисковода нет, может в этм проблема. Хотя, виртуалбно он есть.

В общем, мне хочется увидеть работоспособность проги, но пока не выходит... :-(

Re: статус клавиш num, caps и scroll lock

Добавлено: 22 апр 2008, 16:55
somewhere
DOS Box 0.72 в помощь...

Re: статус клавиш num, caps и scroll lock

Добавлено: 22 апр 2008, 17:22
Alex_Burn
&quot писал(а): DOS Box 0.72 в помощь...
Пробовал, прога из поста 4 данной темы на индикаторы не влияет

Re: статус клавиш num, caps и scroll lock

Добавлено: 22 апр 2008, 19:57
Alex_Burn
Пробовал запускать через DOSBox и код любезно предоставленный airyashov, и код уважаемого BBB, но, к сожалению, никакого эффекта программы на индикаторы клавы. :(
Может быть, у кого-нибудь будут еще мысли по данному вопросу? :confused:
Я пока пошел вешаться... :(

Re: статус клавиш num, caps и scroll lock

Добавлено: 23 апр 2008, 08:56
airyashov
чистый DOS - это загрузочная дискете, либо какой-нить реанимационный диск, либо NERO создайте загрузочный CD с DOS. Загружаете компутер с такого носителя и проверяйте программы.

Re: статус клавиш num, caps и scroll lock

Добавлено: 23 апр 2008, 09:03
Alex_Burn
&quot писал(а): чистый DOS - это загрузочная дискете, либо какой-нить реанимационный диск, либо NERO создайте загрузочный CD с DOS. Загружаете компутер с такого носителя и проверяйте программы.
Нельзя ли по подробней как это осуществить.
Ну, загрузочную дискету я уже создал.
Можно ли описать мне мои дальнейшие действия?