Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Управление лотком CD-ROM на Ассемблере

06.02.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
Открывать и закрывать лоток CD-ROM можно программными способами. Это может оказаться полезным в случаях, когда системный блок стоит в труднодоступном месте или по каким-либо иным причинам нет возможности управлять им при помощи механической кнопки. Также я читал истории, когда на лоток CD-ROM возлагались полезные функции, например, при выдвижении он замыкал контакты питания и отправлял сервер в перезагрузку, а администратор таким образом удаленно управлял им. Так что программное управление лотком CD-ROM имеет место быть, и наша задача научиться его делать. Чаще всего в разных интернетах описывается способ управления при помощи MCI (Media Control Interface). Кстати, именно этот способ приводится в качестве одного из примеров программ в пакете FASM.
  1.         ...
  2.         ; Открыть лоток CD-ROM
  3.         invoke  mciSendString,cmd_open,0,0,0
  4.         invoke  mciSendString,cmd_eject,0,0,0
  5.         invoke  mciSendString,cmd_close,0,0,0
  6.         ...
  7.         ; Закрыть лоток CD-ROM
  8.         invoke  mciSendString,cmd_open,0,0,0
  9.         invoke  mciSendString,cmd_load,0,0,0
  10.         invoke  mciSendString,cmd_close,0,0,0
  11.         ...
  12. cmd_open   db 'open cdaudio',0
  13. cmd_eject  db 'set cdaudio door open',0
  14. cmd_load   db 'set cdaudio door closed',0
  15. cmd_close  db 'close cdaudio',0
У данного метода есть недостатки. Главный заключается в том, что при наличии в системе нескольких приводов CD-ROM нет возможности указать, лоток которого из них необходимо выдвигать, всегда открывается первый по счету. Второй существенный недостаток - некоторые антивирусы считают наличие таких функций в программах потенциально опасными. Видимо из-за того, что иногда несанкционированное открытие лотка CD-ROM используется в различных программах-шутках для окошмаривания доверчивых пользователей.

Читать статью целиком »
Просмотров: 10239 | Комментариев: 6

Восстановление системы в Windows 7

23.12.2010 | Категория: Software | Автор: ManHunter

Восстановление системы в Windows 7

Операционная система Windows 7 обзавелась таким сверхмощным инструментом, как функция восстановление системы. Кроме отката состояния системы до заранее сохраненных точек, можно восстановить систему после гораздо более серьезных сбоев, например, когда поврежден системный загрузчик или отсутствуют системные файлы. Почти все действия выполняются автоматически, пользователю достаточно лишь несколько раз кликнуть мышкой. С ужасом вспоминаю убогую консоль восстановления Windows XP, когда в случае крупных неполадок было проще переставить Windows заново, чем убивать кучу времени за попытками ее оживить. Итак, познакомимся с функцией восстановления системы Windows 7 поближе.

Читать статью целиком »
Просмотров: 31378 | Комментариев: 12

Stop! 1.0

24.11.2010 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Stop!

Программа Stop! предназначена для подавления окна завершения работы системы. По функционалу аналогична вызову команды "shutdown.exe -a", но более удобна в применении. Естественно, что никак не поможет при убитом процессе lsass.exe и прочих критических сбоях, но зато пригодится при лечении всякой вирусни, отладке программ и в другие моменты, когда отведенной на раздумья минуты явно недостаточно. В архиве есть программа test.exe для проверки работоспособности. Для особо запущенных случаев, когда окно завершения выскакивает постоянно, прилагается вариант программы traystop.exe, которая после запуска сворачивается в трей. Для подавления окна завершения работы достаточно кликнуть левой кнопкой мыши на иконке программы в трее. Правая кнопка - меню.

Читать статью целиком »
Просмотров: 5752 | Комментариев: 14

Как запретить Windows переходить в спящий режим

26.10.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter
В некоторых случаях требуется, чтобы на время работы вашего приложения компьютер постоянно оставался в активном состоянии, то есть не включался скринсейвер, не отключался монитор, система не переходила в спящий режим. Для этого надо "убедить" Windows, что за клавиатурой сидит реальный пользователь и проявляет какую-то активность, в этом случае все счетчики времени бездействия будут сбрасываться. Для программной имитации действий пользователя используются две функции: mouse_event для симуляции работы с мышкой мышки и, соответственно, keybd_event для клавиатуры. Также можно использовать более универсальную функцию SendInput, она позволяет симулировать не только мышку и клавиатуру, но и хардварные события. Есть еще более суровые варианты, связанные с ковырянием в реестре, изменением профилей электропитания, но их я рассматривать не буду.

В прикладном приложении для имитации действий пользователя надо установить таймер, например, на секундный интервал, и в его функции-обработчике симулировать движение мыши. Нажатия кнопок мыши и клавиш на клавиатуре симулировать не надо, так как эти действия могут наложиться с действиями реального пользователя, а вот перемещение мышки на какое-нибудь незаметное расстояние будет в самый раз. Почитаем повнимательнее документацию к функции mouse_event. Координаты перемещения задаются в условных единицах - микки, которые высчитываются по формуле: 1 микки = (ширина или высота разрешения монитора) / 65535. Если не указан флаг MOUSEEVENTF_ABSOLUTE, то координаты считаются относительные, то есть от текущего положения курсора. Первоначальный вариант решения был в перемещении курсора на 1 микки от текущего положения курсора, а затем в возвращении его обратно. Но, к сожалению, на Windows XP этот способ все-таки двигал курсор (спасибо ezfalc0n за подсказку). Следующий вариант, вообще без движения, также сбрасывает счетчик времени бездействия системы, так что будем использовать именно его:
  1.         ; Симулировать событие от мышки, оставляя ее на месте
  2.         invoke  mouse_event,MOUSEEVENTF_MOVE,0,0,0,0
Вот и все решение. Теперь Windows будет бодрствовать ровно столько, сколько вам нужно. Можете убедиться в этом, запустив одновременно программу для определения времени бездействия системы и пример из приложения к статье. Вы увидите, что даже когда вы сами не прикасаетесь к мышке и клавиатуре, таймер бездействия системы (функция GetLastInputInfo) остается на нулевой отметке.

Читать статью целиком »
Просмотров: 13045 | Комментариев: 25

Ошибка 8007273D при обновлении Windows 7

01.10.2010 | Категория: Software | Автор: ManHunter

Ошибка 8007273D при обновлении Windows 7

Однажды при попытке очередного обновления системы получил странную ошибку с кодом 8007273D и описанием "Неизвестная ошибка". Windows и без того неохотно раскрывает информацию о своих ошибках, ограничиваясь непонятными индексами. А в этот раз центр помощи вообще показал только дефолтную страницу справки с общими рекомендациями, не дав даже намека на подсказку. Перезагрузка компа, проверка фаервола и сетевых настроек тоже не произвели никакого эффекта. После углубленного изучения разных интернетов выяснилось, что проблема решается сбросом Winsock. Для этого надо запустить консоль cmd, обязательно с правами Администратора, а там ввести руками команду:

netsh winsock reset
После этого потребуется перезагрузка компьютера. В принципе, обновления стали доступны и без перезагрузки, сразу после сброса, но при этом почему-то отвалился домашний FTP и торренты. Так что в этом случае перезагрузка как раз не лишняя.

Читать статью целиком »
Просмотров: 9384 | Комментариев: 15

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0079 сек.) / Память: 4.5 Mb
Наверх