Быстрый поиск
Введите фрагмент названия статьи для поиска
VESA Commander 1.5
22.08.2023 | Категория: Мои программы | Автор: ManHunter
Скриншот программы VESA Commander
VESA Commander - консольная программа для получения различной технической информации и тестирования мониторов с поддержкой стандарта VESA DDC/CI. Она позволяет получить текущее значение и описание любого из поддерживаемых монитором VCP кодов, а также изменить это значение, если это возможно. Таким образом, например, вы можете включить или выключить монитор, поменять язык экранных подсказок, изменить яркость или контрастность, выбрать цветовой профиль, а также сделать со своим монитором еще много чего интересного. Список VCP кодов стандартизирован и описан в документе VESA Monitor Control Command Set (MCCS), там же приводится формат и описание большинства значений передаваемых и получаемых параметров.
Читать статью целиком »
Просмотров: 6222 | Комментариев: 45
Пользовательская фильтрация в функции SHBrowseForFolder
16.07.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Функцию SHBrowseForFolder я оттюнинговал уже давно, казалось бы уже все, дальше некуда. Ан нет, есть куда. Сегодня разберем еще одну замечательную возможность этой функции, а именно пользовательскую фильтрацию. С ее помощью вы можете выводить в древовидный список только те папки и файлы, которые считаете нужным. Это будет очень полезно, когда надо дополнительно подстраховать пользователя от возможной ошибки.Для реализации фильтрации используется технология COM, а это значит, что нам потребуется некоторое количество GUID'ов, структур и констант, которые не знает FASM.
Code (Assembler) : Убрать нумерацию
- ; GUID {00000000-0000-0000-C000-000000000046}
- IID_IUnknown \
- dd 000000000h
- dw 00000h
- dw 00000h
- db 0C0h, 000h, 000h, 000h, 000h, 000h, 000h, 046h
- ; GUID {C0A651F5-B48B-11D2-B5ED-006097C686F6}
- IID_IFolderFilterSite \
- dd 0C0A651F5h
- dw 0B48Bh
- dw 011D2h
- db 0B5h, 0EDh, 000h, 060h, 097h, 0C6h, 086h, 0F6h
- ; IID_IFolderFilterSite Interface
- struct IFolderFilterSite
- ; IUnknown
- QueryInterface dd ? ; 000h
- AddRef dd ? ; 004h
- Release dd ? ; 008h
- ; IFolderFilterSite
- SetFilter dd ? ; 00Ch
- ends
- ; GUID {9CC22886-DC8E-11D2-B1D0-00C04F8EEB3E}
- IID_IFolderFilter \
- dd 09CC22886h
- dw 0DC8Eh
- dw 011D2h
- db 0B1h, 0D0h, 000h, 0C0h, 04Fh, 08Eh, 0EBh, 03Eh
- ; IID_IFolderFilter Interface
- struct IFolderFilter
- ; IUnknown
- QueryInterface dd ? ; 000h
- AddRef dd ? ; 004h
- Release dd ? ; 008h
- ; IFolderFilter
- ShouldShow dd ? ; 00Ch
- GetEnumFlags dd ? ; 010h
- refcount dd ?
- ends
- ; IID_IShellFolder Interface
- struct IShellFolder
- ; IUnknown
- QueryInterface dd ? ; 000h
- AddRef dd ? ; 004h
- Release dd ? ; 008h
- ; IShellFolder
- ParseDisplayName dd ? ; 00Ch
- EnumObjects dd ? ; 010h
- BindToObject dd ? ; 014h
- BindToStorage dd ? ; 018h
- CompareIDs dd ? ; 01Ch
- CreateViewObject dd ? ; 020h
- GetAttributesOf dd ? ; 024h
- GetUIObjectOf dd ? ; 028h
- GetDisplayNameOf dd ? ; 02Ch
- SetNameOf dd ? ; 030h
- ends
- struct STRRET
- uType dd ?
- cStr rb 260
- ends
- SHCONTF_FOLDERS = 0x00000020
- SHCONTF_NONFOLDERS = 0x00000040
- SFGAO_FOLDER = 0x20000000
- SHGDN_FORPARSING = 0x8000
- BFFM_IUNKNOWN = 5
- ; Флаги открытия диалога
- BIF_RETURNONLYFSDIRS = 1
- BIF_DONTGOBELOWDOMAIN = 2
- BIF_BROWSEINCLUDEFILES = 0x00004000
- BIF_NEWDIALOGSTYLE = 0x00000040
Читать статью целиком »
Просмотров: 461 | Комментариев: 2
Многострочные и юникодные данные в INI-файлах
15.06.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Многострочные и юникодные данные в INI-файлах
При всех неоспоримых плюсах ini-файлов у них есть ряд недостатков, которые так любят приводить в пример их противники. Например, ini-файлы не поддерживают значения ключей в юникоде, а также не позволяют сохранять многострочные текстовые данные. Основные функции и способы работы с ini-файлами мы уже разобрали, осталось устранить выявленные недостатки и на этом можно будет закрыть тему.
Читать статью целиком »
Просмотров: 805 | Комментариев: 2
Как получить список установленных принтеров
20.05.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Как получить список установленных принтеров
Если требуется получить информацию об установленных в системе принтерах, то для этого есть несколько вариантов решения: с помощью PowerShell, WMI или различных языков программирования. У меня, как обычно, будет Ассемблер и WinAPI. Приведенный код получает информацию о всех принтерах в системе, в том числе сетевых.
Читать статью целиком »
Просмотров: 593 | Комментариев: 2
Работа с Zone.Identifier на Ассемблере
12.05.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Несколько лет назад я выкладывал пару статей на тему блокировки файлов с помощью альтернативных файловых потоков и Zone.Identifier. Там вся работа с ними выполнялась или средствами самой системы Windows, или сторонними приложениями. Настало время написать собственное приложение.Сперва немного теории. За блокировку файлов отвечает COM-объект IZoneIdentifier для работы с которым нам потребуется несколько структур, GUID'ов и констант, про которые не знает FASM.
Code (Assembler) : Убрать нумерацию
- ; GUID {0968E258-16C7-4DBA-AA86-462DD61E31A3}
- CLSID_PersistentZoneIdentifier \
- dd 00968E258h
- dw 016C7h
- dw 04DBAh
- db 0AAh, 086h, 046h, 02Dh, 0D6h, 01Eh, 031h, 0A3h
- ; GUID {CD45F185-1B21-48E2-967B-EAD743A8914E}
- IID_IZoneIdentifier \
- dd 0CD45F185h
- dw 01B21h
- dw 048E2h
- db 096h, 07Bh, 0EAh, 0D7h, 043h, 0A8h, 091h, 04Eh
- ; GUID {0000010B-0000-0000-C000-000000000046}
- IID_IPersistFile \
- dd 00000010Bh
- dw 00000h
- dw 00000h
- db 0C0h, 000h, 000h, 000h, 000h, 000h, 000h, 046h
- ; IID_IZoneIdentifier Interface
- struct IZoneIdentifier
- ; IUnknown
- QueryInterface dd ? ; 000h
- AddRef dd ? ; 004h
- Release dd ? ; 008h
- ; IZoneIdentifier
- GetId dd ? ; 00Ch
- SetId dd ? ; 010h
- Remove dd ? ; 014h
- ends
- ; IID_IPersistFile Interface
- struct IPersistFile
- ; IUnknown
- QueryInterface dd ? ; 000h
- AddRef dd ? ; 004h
- Release dd ? ; 008h
- ; IPersistFile
- GetClassID dd ? ; 00Ch
- IsDirty dd ? ; 010h
- Load dd ? ; 014h
- Save dd ? ; 018h
- SaveCompleted dd ? ; 01Ch
- GetCurFile dd ? ; 020h
- ends
- CLSCTX_INPROC_SERVER = 1
- S_OK = 0
- STGM_READ = 0
Читать статью целиком »
Просмотров: 583 | Комментариев: 5