Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: функция для прерываний для клавы  (Прочитано 9624 раз)
0 Пользователей и 1 Гость смотрят эту тему.
nikedeforest
Гость
« : 17-12-2003 21:28 » new

Извеняйте, если что (ну там не в тему к примеру, я на форуме первый раз) но у меня вопрос, он вроде как относится и к С и к ассемблеру и к винде, ну надеюсь разберетесь. Так вот вопрос: охото написать такую программульку, которая бы выполняла следущее: при её запуске, система должна перестать реагировать на нажатие клавиш на клаве, за искл. определённой одной. Мне сказали, что иного способа нет , как написать свой обработчик прерываний, но я с этим ещё не знаком, а времени мало (зачётная неделя и пр.) . Просто остаётся надежда , что кто-нибудь из вас подскажет функцию запрета прерываний или т.п. Вот неплохо было бы функцию типа как в ассемблере cli. Она "отключает" все прерывания, но нужно отключить клаву.
Надеюсь, что понятно объянил, если ответ пришлёте на e-mail буду очень признателен. E-mail: nikedeforest@tamb.ru
p.s. Ну ведь наверняка в ассемблере есть такая фукнция или что-то подобное, а я бы её хлоп и в прогу на С вставил.
Записан
Xeysan
Гость
« Ответ #1 : 17-12-2003 23:01 » 

Уточни операционную систему. В С такой функции нет, а в ДОС - это 9 прерывание. Перехватил и делай, что душе угодно.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 18-12-2003 08:44 » 

nikedeforest,  Проблема в том, что под виндой все сообщения получает окно которое находится в фокусе, например твоё. Если ты прехватишь все сообщения от клавы, то достигнешь того-же результата.

А прерывание... Под виндой... Лучше не надо.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
nikedeforest
Гость
« Ответ #3 : 18-12-2003 18:30 » 

Цитата

Уточни операционную систему. В С такой функции нет, а в ДОС - это 9 прерывание. Перехватил и делай, что душе угодно.


Так я собираюсь писать под ДОС. И мне не ичень понятно 9 прерывание , я никогда с ними еще не сталкивался. Объясните хотя бы принцип его действия, а дальше я уж сам.  Но уже спасибо всем.
Записан
Xeysan
Гость
« Ответ #4 : 18-12-2003 19:36 » 

Прерывание..как прерывание. Вызывается по нажатию ( отпусканию ) клавиши. Перехватываешь и считываешь нажатый символ. Если считываешь до стандартного обработчика, то через порты, после - из буфера клавиатуры. Все это есть в Зубкове, да и вообще в интернете информации полно. Успехов.
Записан
Mouse
Молодой специалист

ru
Offline Offline

« Ответ #5 : 23-12-2003 16:12 » 

nikedeforest, подробное рассмотрение этой темы с кучей очень хороших примеров есть в книге: Бурдаев, Иванов, Тетерин "Ассемблер в задачах защиты информации". Ты ведь знаком с ассемблером?  Отлично Просто на асме это сделать проще всего.  Улыбаюсь
Записан
nikedeforest
Гость
« Ответ #6 : 23-12-2003 17:00 » 

Archangel, благодарю за ответ. Книгу обязательно посмотрю. А сделать всё выше перечисленное я хотел на Си, но с ассемблерными вставками. Почему именно так? С ассемблером увы, пока что я на "Вы", поэтому этот способ-единственная (по-моему мнению) альтернатива.
Записан
Anonymous
Гость
« Ответ #7 : 23-12-2003 18:01 » 

На С... Была такая серия "Библиотека системного программиста" с Фроловыми в кач. авторов.  Там есть примеры перехвата прерываний на С. www.proglib.ru
Это был Xeysan
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines