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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Hunter557
13 / 13 / 0
Регистрация: 20.02.2010
Сообщений: 35
#1

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

05.12.2011, 20:49. Просмотров 523. Ответов 0
Метки нет (Все метки)

Доброго времени суток! Есть программка для блокирования клавиши клавиатуры "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)();
}
использую Turbo C++ 3.1
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 20:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос блокирования клавиши клавиатуры "8" (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Как принять код клавиши, а вписать саму клавишу? (Принимает "57", что означает "9") - C++
Нужно избавиться от такой глупости: char ch = 0; if(ch=='1')mas=1; if(ch=='2')mas=2; if(ch=='3')mas=3; ...

Как сделать так, чтобы scanf в переменную double мог считывать с клавиатуры не только "0,01", но и "0.01" - C++
Помогите!) Не знаю, искал, не нашел, возможно ли вообще. Чтобы и так и так понимал.

Как сделать так, чтобы введенное с клавиатуры слово "helllo" в памяти сохранялось в виде "Hello". - C++
Здравствуйте. Подскажите пожалауйста как сделать чтоб согда я вводу с клавиатуры helllo, в памяти оставалось &quot;Hello&quot;. Данные типа...

Ввести с клавиатуры строку, заменить в ней все буква "а" на букву "b" - C++
Здравствуйте) Вот возникла такая проблема.... не умею работать с указателями еще(( Помогите написать задачку: &quot;используя указатели,...

Два числа, действительное "a" и натуральное "n" вводятся с клавиатуры - C++
Два числа, действительное &quot;a&quot; и натуральное &quot;n&quot; (n&gt;=10) вводятся с клавиатуры, необходимо найти значение выражения : ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2011, 20:49
Привет! Вот еще темы с ответами:

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru