Blog. Just Blog

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

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

Перехват Ctrl+C и Ctrl+Break в консольных программах

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

Перехват Ctrl+C и Ctrl+Break в консольных программах

В отличие от оконных приложений, у консольных программ не так много возможностей по обработке разных нештатных ситуаций, например, внепланового завершения работы. Это может быть нажатие комбинаций Ctrl+С, Ctrl+Break или закрытие окна консоли. Правильно написанное приложение должно уметь обрабатывать подобные ситуации и корректно завершать работу, то есть успеть сохранить какие-то промежуточные данные, освободить занятые ресурсы или уведомить пользователя, что его действия контрпродуктивны.

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

Загрузка иконки напрямую из памяти

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

Загрузка иконки напрямую из памяти

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

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

Обмен данными между процессами с помощью WM_COPYDATA

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

Обмен данными между процессами с помощью WM_COPYDATA

Обмен данными между процессами приложений может выполняться различными способами. Это может быть shared-память, буфер обмена, COM-объекты и другие высокоуровневые способы. Но наиболее простым и понятным способом является передача данных с использованием сообщения WM_COPYDATA. В этом случае обмен происходит через ядро системы с выделением памяти в принимающем процессе. Таким образом, например, выполняется взаимодействие с окном плеера JetAudio.

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

Работа с окнами оповещений в трее на Ассемблере

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

Работа с окнами оповещений в трее на Ассемблере

Окно оповещения в системном трее, оно же System Tray Balloon Notification, - очень удобный инструмент для взаимодействия с пользователем и оповещения его о каких-либо событиях. Когда у меня возникла необходимость, в этих ваших интернетах нашлось не так много материалов по работе с такими оповещениями, а тем более на Ассемблере. Пришлось разбираться самому. Зато теперь я попробую хоть чуть-чуть восполнить этот пробел.

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

Как получить список физических дисков и узнать их размер

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

Как получить список физических дисков и узнать их размер

Как вы знаете, физические диски, установленные в системе, обозначаются символическими ссылками вида "\\.\PhysicalDrive0", "\\.\PhysicalDrive1" и так далее. Однако, в WinAPI нет простых штатных функций, чтобы получить их список. Для того, чтобы сделать это, в интернетах предлагают несколько различных способов. Например, самый дуболомный, это последовательный перебор всех значений от 0 до MAX_DRIVES. В разных компиляторах это значение может меняться от 16 до 26, также не исключено, что значение может дополнительно ограничиваться системой. Дальше в цикле формируется символическая ссылка с текущим индексом и с помощью вызова CreateFile осуществляется попытка открыть это устройство. Если функция вернула ERROR_FILE_NOT_FOUND, то такого физического диска в системе нет, если ошибки нет, то ссылка доступна для использования, в противном случае диск присутствует, но по какой-то причине у вас нет к нему доступа. В принципе, это решение имеет место на существование, но есть вариант более правильный.

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

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