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

Блокирования клавиши клавиатуры - C++

Восстановить пароль Регистрация
 
D1K
1 / 1 / 0
Регистрация: 26.04.2011
Сообщений: 36
13.12.2011, 01:41     Блокирования клавиши клавиатуры #1
Есть программка для блокирования клавиши клавиатуры "8" при нажатии комбинации клавиш Правый Shift+Правый Ctrl+F8. Программа компилируется и запускается, но при работе не вводится информация с клавиатуры, чтобы проверить работу программы - в чем может быть ошибка?
Вот текст программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*---------------- Lab work N6_2-----------------*/
/*-----------------Keyboard control-----------------*/
/* Include standart htder */
#include <dos.h>
#include <conio.h>
#include <stdio.h>
 
void interrupt (*old9)(); /* Old interrupt  dealer 9h */
void interrupt new9();    /* New interrupt  dealer 9h  */
void *readvect (int in);  /* Reading vector                  */
void writevect (int in, void *h); /* Writing vector           */
unsigned char F8_code=66; /* scan-code "F8"                  */
unsigned char key8_code=9;/* scan-code "8"                   */
char f=0;                 /* flag                            */
union REGS rr;
struct SREGS sr;
/*-----------------------------------------------------------------*/
void main()
{
  char string[80]; /* Input text bufer */
  textbackground(0);
  clrscr();
  textattr(0x0a);
  cprintf("----------------");
  cprintf("              Lab work N6_2              ");
  cprintf("----------------");
  cprintf("----------------");
  cprintf("              Keyboard control              ");
  cprintf("----------------");
  old9=(void interrupt(*)())readvect(9);
  writevect(9,(void*) new9);
  textattr(0x0c);
  cprintf("\n\n\r\Hot combination: ");
  textattr(0x0a);
  cprintf("Right Shift, Right Ctrl, F8\n\r");
  textattr(0x0b);
  cprintf("Blocking key: ");
  textattr(0x0f);
  cprintf("8");
  textattr(0x07);
  cprintf("\r\n Please, input string of simbols>");
  scanf("%s",string);
  writevect(9,(void*)old9);
}
/*----------------------------------------------------------------*/
/* Reading the vector */
void *readvect(int in)
{
  rr.h.ah=0x35;
  rr.h.al=in;
  intdosx(&rr,&rr,&sr);
  return(void*)(MK_FP(sr.es,rr.x.bx));
}
/*----------------------------------------------------------------*/
/* Writing the vector */
void writevect(int in, void *h)
{
  rr.h.ah=0x25;
  rr.h.al=in;
  sr.ds=FP_SEG(h);
  rr.x.dx=FP_OFF(h);
  intdosx(&rr,&rr,&sr);
}
/*----------------------------------------------------------------*/
/* New dealer of the  9-th interrupt */
void interrupt new9()
{
  unsigned char c,x,y;
  unsigned char byte17,byte18;
  //unsigned char mask=0x02;
  unsigned char mask17=0x14;
  unsigned char mask18=0x00;
  byte17=peekb(0x40,0x17);
  byte18=peekb(0x40,0x18);
  if((inportb(0x60)==F8_code)&&(byte17&mask17)&&(!(byte18&mask18)))
  {
   cputs("\7");
   x=wherex();
   y=wherey();
   gotoxy(55,3);
   textattr(0x1e);
   if(f==0)
   {
    f=1;
    cprintf("The key \"8\" is blocked ");
   }
   else
   {
    f=0;
    cprintf("The key \"8\" is unblocked");
   }
   gotoxy(x,y);
   textattr(0x07);
   (*old9)();
  }
  if( (f==1) && (inportb(0x60)==key8_code) )
  {
   c=inportb(0x61);
   outportb(0x61,c|0x80);
   outportb(0x61,c);
   outportb(0x20,0x20);
  }
  else
   (*old9)();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2011, 01:41     Блокирования клавиши клавиатуры
Посмотрите здесь:

C++ Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов.
C++ прога, которая по нажатой клавише выводит ascii - код символа это клавиши или scan - код самой клавиши.
C++ Как ввести двумерный массив с клавиатуры? Его размерность [n][m] нужно задавать с клавиатуры.
C++ Как сделать считывание клавиши с клавиатуры в реальном времени?
Зажатие клавиши C++
C++ Написать программу, которая будет добавлять в текстовый файл введенную с клавиатуры информацию.З клавиатуры вводится имя компании, год основания
C++ Исправить вызов функций блокирования
Чтение с клавиатуры ситемной клавиши F5 в консоли C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 00:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru