Страница 1 из 2
Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 15 дек 2008, 11:49
Gore
как в паскале временно заблокировать работу клавиатуры7
Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 15 дек 2008, 14:07
Naeel Maqsudov
1) Перенесенов общие вопросы, так как наверняка это не могло быть студенческой задачей.
2) "Ичерпывающая" формулировка вопроса... Как заблокировать? Для данного приложения или для всех приложений? Для какой операционной системы? На каком паскале? (TurboPascal, ObjectPascal...)
Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 16 дек 2008, 00:46
Esgal
если под виндоус 98, 95, могу посоветовать переписать обработчик прерываний клавиатуры... если интересно пиши, объясню...
если под ХР, лучше на делфи...
или тбе чтото другое нужно...
действительно, опиши точнее что тебе нужно
Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 16 дек 2008, 12:19
Хыиуду
while true do c:=readkey;

Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 18 дек 2008, 06:06
Gore
Честно говоря зря тема была перенесена поскольку ето все таки было задание для студентов. А насчет условий задание заключалось в следующем: На 5 секунд выключить клавиатуру а затем вкючить обратно. Средой разработки является Борланд Паскаль или Турбо Паскаль.
Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 18 дек 2008, 10:12
Esgal
сегодня вечером опишу как обработчик прерываний переписать...
а какой предмет?
если информатика на первом курсе, препод должен удивится)
Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 18 дек 2008, 13:33
Gore
нее неудивиться основы программирования
Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 18 дек 2008, 21:40
Esgal
давай будем считать что временно это 10 секунд, сейчас напишу...
Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 18 дек 2008, 22:02
Esgal
[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 виндоусе точно...
вопросы будут спрашивайте.... помоему правильно... если неправельно поправте пожалуйста
Re: Паскаль. временно заблокировать работу клавиатуры.
Добавлено: 19 дек 2008, 09:38
BBB
Esgal,
А как и для чего используется переменная j?