Универсальный конвертер текста 1.0

Очередной релиз от меня — программка для конвертации текста в разные представления и вычисления хэшей, написанная на ассемблере (masm32).
Имеется быстрое копирование и вставка текста, сохранение и открытие текстовых файлов.

Поддерживает конвертацию:
* Text -> URLEncode
* Text -> String.fromCharCode (ascii)
* Text -> String.fromCharCode (utf)
* Text -> base64
* Text -> MySQL char
* Text -> HEX
* Text -> BIN
* Text -> chr()
* Text -> MSSQL char
* Text -> PostgreSQL
* Text -> MD5
* Text -> SHA1
* Text -> &#xxx; (ascii)
* Text -> &#xxx; (utf)
* Text -> \xhh
* Text -> %XX
* Text -> VB chr$()
* Text -> C# (char)
* Text -> Транслит
* URLEncoded -> Text
* base64 -> Text

Скриншот:

Скачать exe (10кб) и исходные коды: ZIP

В общем исходный код программки ничем не отличается от тех, что я выкладывал раньше, но есть несколько интересных особенностей, которые я опишу дальше.

Я рассмотрю:
[+] как создавать формы в стиле XP (современный вид элементов управления) с помощью программы ResEd
[+] как создавать и использовать в программе Unicode-строки, в том числе на русском языке
[+] как делать всплывающие подсказки к текстовым полям
[+] как использовать Windows CryptoAPI для генерации хэшей
[+] как использовать буфер обмена Windows для копирования и вставки текста

Напомню, что я использую в коде некоторые удобные макросы из файла macros/macros.asm, входящего в пакет masm32.

1. Как создавать формы в стиле XP (современный вид элементов управления) с помощью программы ResEd?
ResEd — маленькая бесплатная утилита для удобного создания файлов ресурсов.
Скачать его можно отсюда: ResEd.
Открываем редактор, создаем новый проект (File — New Project), добавляем к нему новое диалоговое окно (Project — Add Dialog).
Устанавливаем желаемые параметры окна во вкладке справа внизу, добавляем необходимые элементы управления, устанавливаем их параметры.
Чтобы все элементы выглядели в стиле XP, нужно добавить XP Manifest (Project — Add XP Manifest).
Сохраняем проект — получаем два файла — сам проект *.rc и манифест (xpmanifest.xml).
После того, как мы сохранили проект и вышли из редактора, надо немного подготовить файл ресурсов перед его использованием.
Открываем файл ресурсов (*.rc) в блокноте и добавляем в начало строку:

После этого удаляем строку (необязательно, но без этого у меня проект не запускался):

Сохраняем файл — он готов к использованию в проекте.
Как же скомпилировать исходный код в asm вместе с файлом ресурсов в exe?
Для этого я использовал такой bat-файл (допустим, назовем его COMPILE.bat):

Вызывается этот батник так:
— положите его в папку вместе с исходным кодом и файлом ресурсов *.rc (файлы *.rc и *.asm должны называться одинаково, например, converter.asm и converter.rc, в той же папке должен лежать xpmanifest.xml)
— в командной строке (cmd) перейдите в директорию с этими файлами (с помощью команды cd)
— выполните команду COMPILE имя_проекта (например COMPILE converter)
Если будет выведено «OK» — exe-файл был успешно создан в той же директории.

2. Как создавать и использовать в программе Unicode-строки,, в том числе и на русском языке?
В последней версии пакета masm32 имеется поддержка Unicode-строк и функций, но вот создать с его помощью русскую
Unicode-строку проблематично. Я для этого использовал набор макросов с wasm.ru, который позволяет делать русские Unicode-строки.
К сожалению, макрос создания строк содержит недостаток — каждый 120-й символ просто убирается из строки.
Я поправил недочет этого макроса, скачать исправленный можно тут: windows.asm.

Теперь, чтобы создать русскую Unicode-строку, подключаем макрос с помощью include к коду и пишем так:

Соответственно, такие строки сожно использовать в любых Unicode-функциях (с постфиксом W, например, MessageBoxW).

3. Как делать всплывающие подсказки к текстовым полям?
Начиная с Win XP, у элементов управления Edit появилась возможность создавать всплывающие подсказки, как на первом скриншоте, я покажу, как такое реализовать.
Для показа такой подсказки необходимо послать текстовому полю сообщение EM_SHOWBALLOONTIP, а самой подсказкой управляет структура EDITBALLOONTIP.
Странно, но в inc-файлах масма32 такой структуры не оказалось, поэтому приходится задавать ее самим:

Далее, если у нас есть Edit-контрол с id=1003, то отобразить подсказку можно так:

4. Как использовать Windows CryptoAPI для генерации хэшей?
Для примера я покажу, как генерировать хэши MD5 и SHA1 для заданных строк.
Во-первых, для работы с крипто апи необходимо подключить inc-файл advapi32.inc и lib-файл advapi32.lib.
Приведу пример с комментариями из кода конвертора:

5. Как использовать буфер обмена Windows для копирования и вставки текста?
Опять-таки приведу пару примеров из кода конвертора.

Копирование текста из текстового поля с id=1004:

Вставка текста в поле с id=1003:

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*