Паскаль. временно заблокировать работу клавиатуры.
Модераторы: Naeel Maqsudov, C_O_D_E
как в паскале временно заблокировать работу клавиатуры7
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
1) Перенесенов общие вопросы, так как наверняка это не могло быть студенческой задачей.
2) "Ичерпывающая" формулировка вопроса... Как заблокировать? Для данного приложения или для всех приложений? Для какой операционной системы? На каком паскале? (TurboPascal, ObjectPascal...)
2) "Ичерпывающая" формулировка вопроса... Как заблокировать? Для данного приложения или для всех приложений? Для какой операционной системы? На каком паскале? (TurboPascal, ObjectPascal...)
если под виндоус 98, 95, могу посоветовать переписать обработчик прерываний клавиатуры... если интересно пиши, объясню...
если под ХР, лучше на делфи...
или тбе чтото другое нужно...
действительно, опиши точнее что тебе нужно
если под ХР, лучше на делфи...
или тбе чтото другое нужно...
действительно, опиши точнее что тебе нужно
Luke! Use the Force! Use the Force... oh, Luke! Stop using the Force, use your head!
while true do c:=readkey;


Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Честно говоря зря тема была перенесена поскольку ето все таки было задание для студентов. А насчет условий задание заключалось в следующем: На 5 секунд выключить клавиатуру а затем вкючить обратно. Средой разработки является Борланд Паскаль или Турбо Паскаль.
сегодня вечером опишу как обработчик прерываний переписать...
а какой предмет?
если информатика на первом курсе, препод должен удивится)
а какой предмет?
если информатика на первом курсе, препод должен удивится)
Luke! Use the Force! Use the Force... oh, Luke! Stop using the Force, use your head!
нее неудивиться основы программирования
давай будем считать что временно это 10 секунд, сейчас напишу...
Luke! Use the Force! Use the Force... oh, Luke! Stop using the Force, use your head!
[syntax=delphi]
{$M $800,0,0 }
program Keysleep;
uses Crt,Dos;
var KbdIntVec:Procedure;
TimerIntVec:Procedure;
i,j:word;
{$F+}
procedure Timer; interrupt;
begin
i:=i+1;
inline ($9C); { PUSHF -- Push flags }
TimerIntVec;
end;
procedure KeyClick; interrupt;
begin
if i<10*18 then inc(j){от таймера поступает примерно 18 прерываний в секунду}
else
begin
inline ($9C); { PUSHF -- Push flags }
KbdIntVec;
end;
end;
{$F-}
begin
i:=0;
j:=0;
GetIntVec($9,@KbdIntVec); {Sohranaem standartnyi obrabotchhik prerivanyi}
SetIntVec($9,Addr(KeyClick)); {Ustanavlivaem svoy}
GetIntVec($8,@TimerIntVec); {Sohranaem standartnyi obrabotchhik prerivanyi}
SetIntVec($8,Addr(Timer)); {Ustanavlivaem svoy}
Keep(0); {Ostavlaem rezedentno}
end.
[/syntax]
Примерно так... откомпилировать можно и на ХР, но работать будет только на ос кот потдерживают полную эмуляцию доса, т.е. не выше 98... на 95 виндоусе точно...
вопросы будут спрашивайте.... помоему правильно... если неправельно поправте пожалуйста
{$M $800,0,0 }
program Keysleep;
uses Crt,Dos;
var KbdIntVec:Procedure;
TimerIntVec:Procedure;
i,j:word;
{$F+}
procedure Timer; interrupt;
begin
i:=i+1;
inline ($9C); { PUSHF -- Push flags }
TimerIntVec;
end;
procedure KeyClick; interrupt;
begin
if i<10*18 then inc(j){от таймера поступает примерно 18 прерываний в секунду}
else
begin
inline ($9C); { PUSHF -- Push flags }
KbdIntVec;
end;
end;
{$F-}
begin
i:=0;
j:=0;
GetIntVec($9,@KbdIntVec); {Sohranaem standartnyi obrabotchhik prerivanyi}
SetIntVec($9,Addr(KeyClick)); {Ustanavlivaem svoy}
GetIntVec($8,@TimerIntVec); {Sohranaem standartnyi obrabotchhik prerivanyi}
SetIntVec($8,Addr(Timer)); {Ustanavlivaem svoy}
Keep(0); {Ostavlaem rezedentno}
end.
[/syntax]
Примерно так... откомпилировать можно и на ХР, но работать будет только на ос кот потдерживают полную эмуляцию доса, т.е. не выше 98... на 95 виндоусе точно...
вопросы будут спрашивайте.... помоему правильно... если неправельно поправте пожалуйста
Luke! Use the Force! Use the Force... oh, Luke! Stop using the Force, use your head!
Esgal,
А как и для чего используется переменная j?
А как и для чего используется переменная j?