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

Программы для работы с TypeLib
07.08.2023 | Категория: Software | Автор: ManHunter
TypeLib, оно же Type Library, - это хранилище информации о возможностях ActiveX-сервера. Такие библиотеки были введены для стандартизации способа получения подробных сведений об ActiveX-компоненте: списка реализуемых им классов и поддерживаемых интерфейсов, их идентификаторов, кратких описаний и прочего. Библиотеки могут храниться как в виде отдельных файлов, так и в ресурсах динамических библиотек. Это на самом деле очень удобно, когда надо посмотреть, какие методы реализует та или иная библиотека, какие GUID'ы надо использовать для инициализации интерфейсов, какие значения констант можно использовать в приложении. С программными способами доступа к этой информации мы поговорим позже, сейчас же набор инструментов, с помощью которых вы можете проанализировать содержимое хранилищ TypeLib различных форматов.
Скриншот программы OLE/COM Object Viewer
Начнем обзор с программы от разработчиков технологий COM и ActiveX. Основной официальный инструмент для работы с TypeLib - OLE/COM Object Viewer от Microsoft. Эта программа входит в состав пакета Windows SDK, включена в комплект инструментов Microsoft Visual Studio, но отдельно не распространяется.
Читать статью целиком »
Просмотров: 241 | Комментариев: 1

GUID Helper 1.7
22.07.2023 | Категория: Мои программы | Автор: ManHunter

Скриншот программы GUID Helper
Программа-помощник для программистов, которая преобразует название и GUID из строковой записи в формат данных, принятый в Ассемблере. У программы есть собственная база данных, если введенное название GUID в ней присутствует, то вы сразу получите заполненное поле, соответствующее его значению. И наоборот, по строке GUID можно получить из базы его название. Если указанный GUID относится к интерфейсам, то опционально можно также получить его методы в виде структуры. Программа написана для личных нужд, так как мне надоело сперва искать в интернете нужные значения, а затем вручную переводить их в формат Ассемблера. Если программа пригодится кому-нибудь еще, то я буду только рад. Файлы баз данных представляют собой обычные ini-файлы, так что можете добавлять туда любые нужные вам значения или вообще заменить на свои собственные.
Читать статью целиком »
Просмотров: 2846 | Комментариев: 29

Пользовательская фильтрация в функции 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
Читать статью целиком »
Просмотров: 274 | Комментариев: 2

Распаковка ZIP-архивов на Ассемблере
08.07.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Распаковка ZIP-архивов на Ассемблере
Если система выполняет какие-то действия "из коробки", то с очень большой вероятностью ваше приложение также сможет их использовать, надо только узнать как. Начиная с Windows XP, Проводник может работать с архивами в формате ZIP, как будто это обычные каталоги. Файлы и подкаталоги из них извлекаются обычным копированием. Давайте научимся делать то же самое.
Читать статью целиком »
Просмотров: 468 | Комментариев: 10

Обработка событий IWebBrowser на Ассемблере
29.05.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Обработка событий IWebBrowser на Ассемблере
В предыдущей статье про работу со встроенным браузером я написал, что статус полной загрузки страницы можно отслеживать при помощи таймера и вызова метода get_ReadyState интерфейса IWebBrowser2. Способ имеет место быть, но также имеет немало недостатков. Правильное решение этой задачи - получения сигналов от объекта браузера и обработка событий IWebBrowser. Пришлось провести пару бессонных ночей в отладчике, но результат меня порадовал.
Читать статью целиком »
Просмотров: 322 | Комментариев: 0
