На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Прерывания
    А как с сабжем под Виндами работать?
      Никак.  По-моему, там нет такого даже понятия. Есть вроде что-то похожее,
      кажется, называются сообщениями, если не ошибаюсь.
        http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=asm;action=display;num=1017667603
          Да это я читал уже да и знал.

          Может я не очень правильно вопрос задал, мне интересно можно ли в Win32 так же как в Досе, на свои обратотчики событий от мыши клавы... делать т.е. нажал я на клаве букву "Ц" а мой обработчик в буфер поместил "В".
            Да, можно, используя хуки.
            В твоем случае это хуки WH_KEYBOARD (Win32) или WH_KEYBOARD_LL (WinNT/2k).
            Win32 организована на сообщениях. При нажатии кнопок клавиатуры активному окну генерятся сообщения WM_KEYUP и WM_KEYDOWN. Так вот процедура хука, если она глобальная, по-простому говоря, становится фильтром между системой и любым активным окном, перехватывает эти сообщения и может что-то менять, или вовсе не пропускать...
            Хук WH_KEYBOARD_LL к тому же реагирует на сообщения WM_SYSKEYUP и WM_SYSKEYDOWN, то есть на все специальные клавиши и их комбинации, кроме Ctrl-Alt-Del
              Где про эти хуки почитать можно?
                В MSDN, а также в книгах Рихтера и Питрека.

                Примеры хуков на C (хотя я уже в форуме их указывал совсем недавно):
                http://www.sources.ru/cpp/cpp_lock_mouse_and_keyboard.shtml
                http://www.sources.ru/cpp/tips/system_wide_hook.shtml
                http://www.sources.ru/cpp/cpp_pwdspy.shtml
                http://support.microsoft.com/support/kb/articles/Q81/3/34.ASP


                  Ну от чего же! Можно и прерывания перехватить. Они ж аппаратные, так что и в винде и в досе и в линухе одинаковы. Для PC-платформы. Вот только сделать это можно к сожалению только из ring0. То биш дровишки писать надо...
                    2 server_mouse:
                    Аппаратные-то они аппаратные! А вот номер прерывания тебе ведом? ;)
                    Какой, собственно, дескриптор IDT подменять придется? Прочитал твое сообщение, так руки и зачесались написать обработчик! :) Ты уж мне помоги советом, что и как! С Ring0 нет проблем, а дальше-то что? ;)

                    Кстати, для Win9x Ring0 для подмены обработчика не требуется (CIH как раз и использует подмену обработчика INT 3 для входа в Ring0), а для WinNT действительно драйвер придется писать.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0241 ]   [ 15 queries used ]   [ Generated: 1.05.24, 23:53 GMT ]