Нужен резидент, блокирующий нажатие CTRL+Break.
Что происходит при нажатии этих клавиш?
Осуществить блокировку требуется программно, т.к. соответствующая команда ДОС не работает!
Вроде была какая-то переменная окружения в ДОСе.
А что, разве в TP не работает SetCBreak(False) и checkbreak:=false ?
Попробуй ту же прогу протестить в реальном досе, может винда не даёт тебе выполнить эту операцию.
Пробовал!
Нет, не работает дос переменная окружения!
Виновата имеено винда
А вот за я зык тебя никто не тянул.
Будешь мне помогать ...
Вот прога:
ну значит мои размышления верны. Я счастлив!
Рад помочь,
checkbreak:=false;
и усе. при его примениении SetCBreak(False) уже не обязательно, и библиотеку DOS мона не подключать, а обойтись тока CRT )
godd, если бы Вы внимательно прочти сказанное выше, Вы бы не оставили здесь свой неудачный пост.
у меня и под Виндой блокируется (ME).
я серьезно говорю. Винда - MilleniumEdition, Ctrl+Break - блокируется через checkbreak:=false модуля CRT (в help'e написано что он и под виндами пашет, и отключает не тока Ctrl+Break но и Alt+F4 и еще чо-то - кому интересно в справке), просто Break - останавливает прогу до нажатия клавиши
пред пост я написал.
Oleg_Z
я имел ввиду паузу.
Не стал дочитывать до конца - влом как-то. Есть такой Int интересный, который вызывается как реакция на Ctrl+Break. Вроде 24h. Его адрес ещё в PSP прописывается. Можно было бы его перехватить... Хотя, что на это скажет винда - не знаю.
Ага, спасибо BlackShadow, именно мне это и надо!
перхват прерывания самое надежное дело!
BlackShadow
а ты почитай, там вывод: checkbreak из модуля crt решает данную задачу
Oleg_Z
дело хозяйское
Дело в том, что из модуля то решает но инстерсно как там все работает!
Oleg_Z
понятно. просто я на ассме не разбираюсь, и не до конца понимаю, где он может пригодиться (ну мелкие там функции для прог - это и я, если поднапрячся и сильно надо будет смогу, а по-крупному?)
godd, тогда и не пытайся учить старших
CheckBreak определяет набор функций DOS'а, которые используются при вводе выводе самим модулем. А вот Oleg_Z, может относит себя к тем, что не станет рисковать Runtime Error'ом 200 из-за какого-то CheckBreak'а.
BlackShadow
я и не пытаюсь ;)
мне просто интересно )
Прерывание Int 23h активизируется из системных вызовов DOS, проверяющих буфер клавиатуры (в основном функции консольного ввода-вывода), и возникает при обнаружении в буфере сочетания Ctrl-C. При нажатии Ctrl-Break происходит более сложная комбинация: контроллер клавиатуры -> IRQ1 <=> Int 9 -> Int 1Bh - обработчик Ctrl-Break BIOS'а, по умолчанию вставляет Ctrl-C в буфер клавиатуры.
Вектор Int 23h не требует восстановления перед выходом из программы: после завершения программы DOS сама присваивает стандартные значения векторам Int 22h, 23h, 24h.