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

Работа с 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
Читать статью целиком »
Просмотров: 673 | Комментариев: 5

Как программно получить и установить рейтинг файла
04.05.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Как программно получить и установить рейтинг файла
Начиная с Windows Vista у пользователя появилась возможность ставить оценки некоторым файлам, например, фотографиям, музыкальным файлам и видеороликам. Оценка отображается при просмотре таблицы файлов в Проводнике в виде звездного рейтинга от 0 до 5. На мой взгляд, штука не особо нужная, но раз она присутствует в системе, то почему бы не научиться с ней работать? Как обычно, Ассемблер нам в этом поможет.
Читать статью целиком »
Просмотров: 539 | Комментариев: 0

Программы для работы с Jump List'ами приложений
25.02.2023 | Категория: Software | Автор: ManHunter
Раз уж я затронул тему "внутренней" работы с Jump List приложений, то было бы неплохо рассказать про готовые программы, которые работают с ними "снаружи".
Удаление элемента системными средствами
Начнем с того, что правильные приложения должны позволять удалять штатными системными средствами добавленные ими часто используемые документы или ссылки. Это же касается и закрепленных пользователем элементов списка.
Читать статью целиком »
Просмотров: 1295 | Комментариев: 1

Добавление элементов и задач в Jump List приложения
22.01.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Добавление элементов и задач в Jump List приложения
Функция "Jump List" - список быстрого перехода - впервые появилась в Windows 7. Она создана для облегчения поиска нужных опций и ускорения выполнения наиболее частых операций для выбранного приложения. Списки быстрого перехода появляются при нажатии правой кнопкой мыши на значке приложения в панели задач. Большинство функций для работы с панелью задач я уже давным-давно разобрал, а про Jump List совсем забыл. Срочно исправляю ситуацию.
Читать статью целиком »
Просмотров: 1027 | Комментариев: 0

Получение и изменение обоев рабочего стола на Ассемблере
14.01.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Тема обоев рабочего стола Windows уже поднималась тут несколько раз, но это были, в основном, какие-то готовые программные решения. Настало время заглянуть "под капот" системы и посмотреть, как оно устроено. А лучшего инструмента, чем Ассемблер, для этих целей сложно придумать.Начнем с получения информации об установленных обоях рабочего стола. Тут ничего сложного, достаточно вызвать функцию SystemParametersInfo с параметром SPI_GETDESKWALLPAPER.
Code (Assembler) : Убрать нумерацию
- SPI_GETDESKWALLPAPER = 0x0073
- invoke SystemParametersInfo,SPI_GETDESKWALLPAPER,\
- MAX_PATH,szPath,0
- ; szPath -> строка пути к файлу обоев
Теперь переходим к смене обоев рабочего стола. В интернетах для этих целей обычно рекомендуют использовать упомянутую выше функцию SystemParametersInfo с параметром SPI_SETDESKWALLPAPER. Код получается минимальный, все очень просто реализуется, выглядит на первый взгляд стильно, модно, молодежно.
Code (Assembler) : Убрать нумерацию
- ; Путь к файлу с новыми обоями рабочего стола
- szPath db 'c:\windows\wallpaper.bmp',0
- SPI_SETDESKWALLPAPER = 20
- SPIF_SENDWININICHANGE = 2
- SPIF_UPDATEINIFILE = 1
- invoke SystemParametersInfo,SPI_SETDESKWALLPAPER,\
- 0,szPath,SPIF_UPDATEINIFILE+SPIF_SENDWININICHANGE
Читать статью целиком »
Просмотров: 730 | Комментариев: 3
