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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа со строками. http://www.cyberforum.ru/cpp-beginners/thread405897.html
Ребят,ну вообще тормоз я,помогите 1. Запишіть П І Б. Запишіть даний рядок в зворотному порядку. 2. Запишіть П І Б. Видаліть всі пропуски в даному рядку. 3. У тексті замінити усі символи ‘ а’...
C++ Обработка символьных строк Помогите, пожалуйста, написать данную программу или дайте хотя бы дельный совет как её написать :) Для большинства существительных, оканчивающихся на -онок и -ёнок, множественное число образуется... http://www.cyberforum.ru/cpp-beginners/thread405893.html
Наследование классов C++
я решил по примеру одной задачи свою, но там много ошибок, может ктото сможет поправить их. Наследование. Администрация,кадры,рабочий,инженер. #include <iostream> #include <string.h> using...
C++ Считать текст из файла и вывести на экран слова из него в алфаыитном порядке
Здравствуйте. Помогите пожалуйста с решением одной задачи. Необходимо считать текст из файла и вывести на экран слова из него в алфаыитном порядке. Текст считать я могу, разделить на слова - тоже....
C++ Найти 3 крайние точки множества и соеденить линиями http://www.cyberforum.ru/cpp-beginners/thread405879.html
#include<conio.h> #include<stdlib.h> #include<math.h> #include<graphics.h> #include<fstream.h> #define PIXEL_COUNT 100 void init_graph(){ int gr_mode, gr_driver=DETECT;
C++ на циклический вычислительный процесс Рассчитать возможный урожай с поля площадью S(Га) при изменении урожайности от YP0=85(ц/Га) до YPK=187(ц/Га) с шагом ∆Y=5(ц/Га). подробнее

Показать сообщение отдельно
D1K
1 / 1 / 0
Регистрация: 26.04.2011
Сообщений: 36

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

13.12.2011, 01:41. Просмотров 955. Ответов 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)();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru