Blog. Just Blog

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

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

Встроенный браузер в приложении на Ассемблере

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

Встроенный браузер в приложении на Ассемблере

Сегодня будем рисовать свой браузер, а точнее внедрять фрейм web-браузера в интерфейс нашего приложения. Нечто подобное мы уже делали, но там были отдельные страницы, а сейчас полноценный браузер, встроенный в приложение. Языком исполнения, естественно, будет Ассемблер.

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

Продвинутая работа с буфером обмена на Ассемблере

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

Продвинутая работа с буфером обмена на Ассемблере

Еще одна статья, посвященная работе с буфером обмена. Обычно для этого используются функции GetClipboardData и SetClipboardData, но сегодня мы будем осваивать новый уровень - чтение и запись различных данных в буфер обмена при помощи OLE-функций. Хорошая практика для закрепления навыков работы с объектами.

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

Работа с метаданными MP3-файлов на Ассемблере

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

Работа с метаданными MP3-файлов на Ассемблере

Во многих файлах, в частности музыкальных и видео, присутствуют особые блоки данных, так называемые метаданные или теги. Метаданные содержат информацию о названии композиции и альбома, имени исполнителя, жанре, номере трека и т.п. Их используют программные и аппаратные проигрыватели, каталогизаторы и другие средства для работы с мультимедийными файлами. Давайте посмотрим, как можно получить теги из MP3-файла или изменить их средствами самой системы без ручного парсинга внутренней структуры файла.

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

Управление громкостью звука в системе

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

Управление громкостью звука в системе

Сегодня разберем пример, как программно изменить громкость звука в Windows. В старых версиях Windows для этого использовались waveform-функции с очень неудобными параметрами. Управлять громкостью с помощью эмуляции мультимедийных клавиш тоже не самое лучшее решение. Но, к счастью, прогресс не стоит на месте.

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

Получение списка программ, закрепленных на панели задач

15.04.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
В одной из старых статей о работе с панелью задач я написал, что узнать список закрепленных программ можно перебором ярлыков в папке %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar. Действительно, это можно сделать и так, но лучше делать это правильно, с использованием предназначенных для этого COM-интерфейсов системы. Начнем с описания констант, GUID и интерфейсов, которые нам понадобятся для работы.
  1. CLSCTX_INPROC_SERVER    = 1
  2. S_OK                    = 0
  3.  
  4. ; Windows Vista
  5. ; GUID {C3C6EB6D-C837-4EAE-B172-5FEC52A2A4FD}
  6. IID_IPinnedList dd 0C3C6EB6Dh
  7.                 dw 0C837h
  8.                 dw 04EAEh
  9.                 db 0B1h, 072h, 05Fh, 0ECh, 052h, 0A2h, 0A4h, 0FDh
  10.  
  11. ; Windows 7, 8, 8.1
  12. ; GUID {BBD20037-BC0E-42F1-913F-E2936BB0EA0C}
  13. IID_IPinnedList2 dd 0BBD20037h
  14.                  dw 0BC0Eh
  15.                  dw 042F1h
  16.                  db 091h, 03Fh, 0E2h, 093h, 06Bh, 0B0h, 0EAh, 00Ch
  17.  
  18. ; Windows 10 build 1809+
  19. ; GUID {0DD79AE2-D156-45D4-9EEB-3B549769E940}
  20. IID_IPinnedList3 dd 00DD79AE2h
  21.                  dw 0D156h
  22.                  dw 045D4h
  23.                  db 09Eh, 0EBh, 03Bh, 054h, 097h, 069h, 0E9h, 040h
  24.  
  25. ; IID_IPinnedList Interface
  26. struct IPinnedList
  27.     ; IUnknown
  28.     QueryInterface dd ?   ; 000h
  29.     AddRef         dd ?   ; 004h
  30.     Release        dd ?   ; 008h
  31.     ; IPinnedList
  32.     EnumObjects    dd ?   ; 00Ch
  33.     Modify         dd ?   ; 010h
  34.     GetChangeCount dd ?   ; 014h
  35.     IsPinnable     dd ?   ; 018h
  36.     Resolve        dd ?   ; 01Ch
  37.     IsPinned       dd ?   ; 020h
  38. ends
  39.  
  40. ; GUID {90AA3A4E-1CBA-4233-B8BB-535773D48449}
  41. CLSID_TaskbarPin dd 090AA3A4Eh
  42.                  dw 01CBAh
  43.                  dw 04233h
  44.                  db 0B8h, 0BBh, 053h, 057h, 073h, 0D4h, 084h, 049h
  45.  
  46. ; IID_IEnumFullIDList Interface
  47. struct IEnumFullIDList
  48.     ; IUnknown
  49.     QueryInterface dd ?
  50.     AddRef         dd ?
  51.     Release        dd ?
  52.     ; IEnumFullIDList
  53.     Next           dd ?
  54.     Skip           dd ?
  55.     Reset          dd ?
  56.     Clone          dd ?
  57. ends
Как это ни странно, интерфейсы IPinnedList и их методы относятся к недокументированным и информации по ним в интернете практически нет. Для Windows 7-8 используется интерфейс IPinnedList2, а для Windows 10 сборки 1809 и выше нужен интерфейс IPinnedList3. Можно заморочиться даже для Windows Vista, там используется интерфейс IPinnedList. Для получения списка закрепленных приложений нам потребуется только один метод - EnumObjects, к счастью, во всех трех интерфейсах он совпадает.

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

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