| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Помигать диодами NumLock, CapsLock... |
| Автор: NUCLEuS 8.4.2006, 18:45 | ||
| Привет всем! Интересует как можно помигать диодами NUM_LOCK, CAPS_LOCK, SCROLL_LOCK. НО, реализовать это нужно через порт клавиатуры, а не с помощью Post/Send message. Т.е. на самом низком уровне. Вот. Буду очень благодарен, если кто нибудь сможет помочь. Спасибо.
|
| Автор: Poseidon 8.4.2006, 18:51 | ||||
Способ для 9x (на NT не работает):
Способ для NT (на 9x не работает):
|
| Автор: NUCLEuS 8.4.2006, 23:18 |
| Poseidon, спасибо конечно, но это что, работа через порт? Я имею ввиду напрямую Добавлено @ 23:25 Girder Извини что засоряю форум подобными сообщениями, но поиск не нашёл ничего стоящего... Мож. это я так искал |
| Автор: Girder 9.4.2006, 13:41 | ||
| А... ты об ентом. Но енто тоже имхо... обсуждалось. Искать лень... так что сделай типо так. Скачиваеш TDriver(см. прикрепленную тему в ентом разделе)... устанавливаеш его... Далее типо так:
PS: Не проверял... |
| Автор: NUCLEuS 10.4.2006, 00:00 |
| Girder, спасибо тебе большое |
| Автор: NUCLEuS 10.4.2006, 00:18 |
| Girder, проверил - не работает Вылетает на Driver1.PortInOut[$60]:=$ed; Если убрать эту строку, то вылетает на следующей (Driver1.PortInOut[$60]:=$2;). Говорит External exeption C0000008 Поправка : посмотрел в отладчике - вылет происходит из-за SetPort функции... А если её вызов убрать то будет Error : Privileged instruction. (как я понял эта функция может открывать порты I/O в NT (а я чёт думал что тут без ring0 не обойтись Что тут можно сделать? |
| Автор: NUCLEuS 10.4.2006, 14:19 |
| Girder, да, работает, спасибо Но мне как всегда хочется всё сделать самому и на самом низком уровне Поэтому начал разбирать твой компонент и понял что без ring0 тут всё таки не обошлось Насколько я понял, ты загнал свой ring0 драйвер в массив (gwiopm_sys) я подумал что это драйвер потому что первые байты 4D 5A (MZ) как раз PE заголовка. Так вот, это уже Off Topic, но мне очень интересно, как ты написал этот самый драйвер, очень хочется увидеть исходник, я тоже хочу научиться писать ring0 драйвера... И интересно как твой драйвер функционирует? Просто даёт вызвавшему приложению ring0 права? Интересно очень... И, если можешь, дай пожалуйста исходник этого драйвера |
| Автор: Girder 10.4.2006, 14:34 |
| Он не мой. PS: http://www.wideman-one.com/gw/tech/Delphi/iopm/gwiopm_code.htm http://www.wideman-one.com/gw/tech/Delphi/iopm/ |
| Автор: NUCLEuS 10.4.2006, 14:50 | ||||
| Girder, ок,почитаю А можешь объяснить эти строчки кода
Start Port = $50 End Port = $70 Это ты разрешаешь работу с портами от $50 до $70 вызывающему приложению? Или не так
Это тоже непонятно ты посылаешь на порт $60 (кстати, почему $60?) 11101101, зачем? |
| Автор: Girder 10.4.2006, 15:37 |
| 1. Вообще-то в TDriver-е енто написано... что делает ента функция. PS: Модифицируется карта разрешения ввода-вывода. 2. енто команда... Set/Reset Mode Indicators |
| Автор: NUCLEuS 10.4.2006, 19:34 |
| Ок, огромное спасибо за всю информацию что ты мне дал |