С Новым Годом! С Новым Годом!
Blog. Just Blog

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

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

Разбор параметров командной строки

03.03.2009 | Категория: Образ мышления: Assembler | Автор: ManHunter
Наконец-то добрался до полезной практической задачи по корректному разбору параметров командной строки. На языках высокого уровня это делается чуть ли не одной командой, а на Ассемблере как обычно приходится все делать самостоятельно. Решение получилось универсальным, подходит как для консольных, так и для GUI-приложений. Для использования функции ParseCmdLine в сегменте данных надо предварительно определить следующую структуру:
  1. ; Структура для командной строки
  2. struct  CMDLINE
  3.         nCount   dd ?   ; Количество аргументов
  4.         lpArgs   dd ?   ; Указатель на массив адресов строк
  5.         lpArgStr dd ?   ; Указатель на массив строк
  6. ends
Формат структуры: nCount - количество параметров командной строки, в случае успешного вызова функции это значение обязательно будет ненулевым, так как самый первый параметр - полный путь запуска программы, а остальные аргументы из хвоста командной строки будут расположены, начиная со второго элемента массива. lpArgStr - указатель на массив параметров командной строки. Все строки в этот массив записываются последовательно одна за другой в формате ASCIIZ, если строки были не в кавычках, то с начала и конца строки удаляются избыточные пробелы и символы табуляции. lpArgs - указатель на массив адресов разобранных параметров командной строки. Какого-то отдельного признака окончания массива не предусмотрено, количество элементов берется из значения nCount.

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

Программное выключение монитора

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

Программное выключение монитора

Выключить монитор из программы можно, но только если он совместим со стандартом EnergyStar. Об этом можно не беспокоиться, все современные мониторы удовлетворяют этому условию. Беспокоиться надо о другом. По непонятной причине с сайта на сайт упорно копируют один и тот же код на разных языках программирования, который якобы должен выключить монитор. Вот его вариант на Ассемблере:
  1. ; ВНИМАНИЕ! Это НЕПРАВИЛЬНЫЙ код!!!
  2. invoke  GetDesktopWindow
  3. invoke  SendMessage, eax, WM_SYSCOMMAND, SC_MONITORPOWER, 0
Во-первых, через хэндл из функции GetDesktopWindow достучаться до монитора не получится, причем ни в обычном Explorer'e, ни в альтернативных шеллах типа Aston Desktop. Чтобы сообщение дошло до нужного адресата, надо использовать широковещательную рассылку через HWND_BROADCAST. Во-вторых, непонятно откуда взялся последний параметр - 0. В MSDN четко прописано, что для выключения монитора через SC_MONITORPOWER значение lParam должно быть равно 2. Более того, нулевого значения параметра для этого сообщения вообще не предусмотрено. В двух строчках кода две принципиальные ошибки! И это уже далеко не первый случай, когда код из различных популярных источников является заведомо нерабочим. Всем любителям бездумного копипаста очень рекомендую сперва сверяться с первоисточниками, а перед публикацией проверять весь код на практике.

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

Apache Server Control 1.1a

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

Скриншот программы Apache Server Control

Еще одна программа, написанная для личных нужд. Apache Server Control позволяет управлять HTTP-сервером Apache версий 1.3.x под Windows: запускать, останавливать и перезапускать его службу. В дистрибутивах Apache 2.x аналогичная программа уже имеется. Кроме управления сервером вы можете редактировать файлы hosts и httpd.conf прямо в окне Apache Server Control. Программа должна находиться в одном каталоге с установленным Apache, тогда все пути к нужным файлам будут определены автоматически. Я использую Apache Server Control когда надо по-быстрому добавить локальный хост, прописать его во все настройки и перезапустить Apache. Может еще кому пригодится.

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

Рекурсивный обход дерева каталогов

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

Рекурсивный обход дерева каталогов

Обход дерева каталогов является одной из классических прикладных задач на применение рекурсии. В Windows штатных API-функций для этого нет, поэтому поиск файлов выполняется при помощи пары API-функций FindFirstFile и FindNextFile. Совершенно непонятно, почему разработчики Windows не дали возможность точно настраивать критерии поиска, ограничившись только маской имени файла. Даже в MS-DOS для решения аналогичной задачи можно было задать по крайней мере атрибуты файлов, например для поиска только каталогов. Более расширенные возможности для поиска предоставляет API-функция FindFirstFileEx, но она доступна только в операционной системе Windows 2000 и выше.

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

Chameleon Clock Fixer 1.0

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

Скриншот программы Chameleon Clock Fixer

Есть такая хорошая программа-часики Chameleon Clock, всех ее достоинств расписывать не буду, кто пользуется - тот знает. Но к сожалению, примерно с версии 3.10, в ней перестала работать опция "Убрать из Alt-Tab". В настройках галочка ставится, но фактически ничего не происходит. Автор на багрепорты и просьбы пользователей не реагирует, предпочитает тратить свое время на борьбу с варезными ссылками на файлообменниках. Пришлось самому писать мелкую утилитку для принудительного убирания значка Chameleon Clock из меню Alt-Tab. Противозаконных действий эта программа не выполняет, никаких защит не ломает и изменений в файлы не вносит, так что всякие заshitники аффтарских прав могут не напрягаться.

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

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