Blog. Just Blog

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

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

Skype: No Fucking Advert 1.0

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

Скриншот программы Skype: No Fucking Advert

Не знаю как вас, а меня рекламные баннеры просто бесят. И если в браузере можно добавить в фильтр ссылки на них, а в большинстве стационарных программ подкорректировать ресурсы или применить какой-нибудь иной патч, то в Skype так просто от баннеров не избавиться. Поскольку на работе частенько приходится пользоваться Skype, после появления в списке контактов очередного рекламного баннера мое терпение лопнуло. В результате появилась программа Skype: No Fucking Advert, которая удаляет рекламу из списка контактов Skype и предотвращает ее повторное появление.

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

Добавление пунктов в системное меню окна

05.11.2013 | Категория: Образ мышления: Assembler | Автор: ManHunter
Некоторые программы добавляют свои пункты меню в стандартное системное меню, которое появляется при клике на иконку окна. Как это делается? Очень просто. При инициализации окна или при наступлении каких-либо определенных условий выполняется примерно следующий код:
  1.         ; Получить хэндл системного меню окна
  2.         invoke  GetSystemMenu,[hwnddlg],0
  3.         mov     ebx,eax
  4.  
  5.         ; Добавить в меню полосу разделителя
  6.         invoke  InsertMenu,ebx,2,MF_BYPOSITION,0,0
  7.  
  8.         ; Идентификаторы сообщений при выборе пунктов меню
  9.         IDM_MENU1 = 101
  10.         IDM_MENU2 = 102
  11.  
  12.         ; Добавить свои пункты меню
  13.         invoke  InsertMenu,ebx,3,MF_BYCOMMAND,IDM_MENU1,szMenu1
  14.         invoke  InsertMenu,ebx,4,MF_BYCOMMAND,IDM_MENU2,szMenu2
  15.         ...
  16.         ...
  17. szMenu1 db 'About',0
  18. szMenu2 db 'Exit',0
В этом примере используется функция InsertMenu, так как нам надо просто добавить пункты в меню. Если планируется использование дополнительных спецэффектов, то эту функцию можно заменить на более современную InsertMenuItem.

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

Как узнать состояние лотка CD-ROM

26.09.2013 | Категория: Образ мышления: Assembler | Автор: ManHunter
В комментариях к моей статье про управление лотком CD-ROM был задан правильный вопрос про то, как узнать состояние лотка CD-ROM, открыт он или закрыт. Обычно все программы, управляющие лотками CD-ROM, хранили эту информацию на основании своих последних действий. То есть, если программа открыла лоток привода, то в своем внутреннем массиве данных она ставит признак "открыто" и наоборот. Причем этот статус вполне мог не соответствовать реальному положению дел, если после этого лоток был закрыт или открыт вручную. Долгое время других способов определения статуса лотка CD-ROM не было. Но программист Александр (Rouse_) Багель в одной из своих разработок предложил хитрый способ определять реальное состояние лотка CD-ROM. Он заключается в том, чтобы отправить команду SCSIOP_MECHANISM_STATUS в запросе IOCTL_SCSI_PASS_THROUGH через функцию DeviceIoControl. Исходный пример был написан на Delphi, мне осталось его только перевести на Ассемблер.

Для начала определим все необходимые структуры и константы, которых по умолчанию нет в FASM.
  1. SCSI_IOCTL_DATA_IN      = 1
  2. SCSIOP_MECHANISM_STATUS = 0BDh
  3. IOCTL_SCSI_PASS_THROUGH = 4D004h
  4.  
  5. struct SCSI_PASS_THROUGH_DIRECT
  6.         Length             dw ?
  7.         ScsiStatus         db ?
  8.         PathId             db ?
  9.         TargetId           db ?
  10.         Lun                db ?
  11.         CdbLength          db ?
  12.         SenseInfoLength    db ?
  13.         DataIn             dd ?
  14.         DataTransferLength dd ?
  15.         TimeOutValue       dd ?
  16.         DataBuffer         dd ?
  17.         SenseInfoOffset    dd ?
  18.         Cdb                rb 16
  19. ends
  20.  
  21. struct SCSI_PASS_THROUGH_DIRECT_BUFFER
  22.         Header          SCSI_PASS_THROUGH_DIRECT
  23.         SenseBuffer     rb 20h
  24.         DataBuffer      rb 0C0h
  25. ends
Основные принципы работы с дисками через DeviceIoControl вы можете посмотреть по приведенной выше ссылке, здесь же я расскажу только о том, как определить статус лотка CD-ROM.

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

Перехват буфера обмена на Ассемблере

24.08.2013 | Категория: Образ мышления: Assembler | Автор: ManHunter

Перехват буфера обмена на Ассемблере

Сегодня разберем интересную тему - перехват буфера обмена. Применений этому перехвату можно найти много: менеджеры буфера обмена, хранящие последние несколько скопированных текстов; программы, выполняющие заданные действия, если в буфере обмена появилось кодовое слово; кейлоггеры, перехватывающие пароли и тексты пользователя; одно время были популярны трояны, подменяющие в буфере обмена номера электронных кошельков на свои собственные. Область применения любой технологии, как обычно, ограничивается только вашей фантазией. Но это все лирика, пора переходить к программированию.

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

Extreme Reboot & Shutdown 1.1

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

Скриншот программы Extreme Reboot & Shutdown

Комплект небольших программ, предназначенных для принудительного выключения и перезагрузки компьютера, гибернации и перевода системы в спящий режим. Программы extreme_off.exe и force_off.exe схожи по функционалу, разница только в используемых функциях. Мгновенно выключают компьютер без сохранения данных, никаких предупреждений не выдается. Программы extreme_reboot.exe и force_reboot.exe - программный аналог кнопки Reset. Никаких предупреждений не выдается, все процессы завершаются мгновенно и без сохранения данных, компьютер перезагружается. Используйте эти программы осторожно, не стоит злоупотреблять некорректным завершением работы системы! Программы safe_off.exe и safe_reboot.exe корректно завершают работу системы, а затем, соответственно, выключают или перезагружают компьютер. Аналог обычного "Пуск" - "Завершение работы". Программа hibernate.exe переводит систему в режим гибернации, а sleep.exe - в спящий режим. Все эти программы можно запускать из пакетных файлов или из заданий планировщиков.

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

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