Blog. Just Blog

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

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

Constant Helper 1.2

27.01.2023 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Constant Helper

Еще одна небольшая программа-помощник для программистов. Показывает значения различных констант из заголовочных файлов Windows. Просто введите название константы и, если она есть в базе программы (более 192.000 значений), вы мгновенно получите ее значение. Как обычно написана для личных нужд, потому что мне реально надоело шерстить интернет на предмет различных значений, которые не описаны в базовых инклудах FASM. Если пригодится кому-нибудь еще, то я буду только рад. Данные спарсены из JEDI API Library, MASM32 SDK, Windows SDK, различных заголовочных файлов и других источников. Файл базы данных представляет собой обычный ini-файл, так что можете добавлять туда любые нужные вам значения или вообще заменить его на свой собственный.

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

GUID Helper 1.5

26.01.2023 | Категория: Мои программы | Автор: ManHunter

Скриншот программы GUID Helper

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

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

Использование системного окна прогресса на Ассемблере

23.01.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Системное окно прогресса - удобный инструмент в тех случаях, когда нет возможности возиться с кастомизацией или созданием нестандартных элементов, или хочется сделать все максимально приближенным к системному интерфейсу, независимо от платформы, где будет запускаться ваше приложение. И очень странно, что нет никакой информации о реализации этого диалогового окна на Ассемблере, хотя все делается достаточно просто. Начинаем с описания интерфейса, GUID'ов и констант.
  1. ; GUID {F8383852-FCD3-11D1-A6B9-006097DF5BD4}
  2. CLSID_ProgressDialog \
  3.     dd 0F8383852h
  4.     dw 0FCD3h
  5.     dw 011D1h
  6.     db 0A6h, 0B9h, 000h, 060h, 097h, 0DFh, 05Bh, 0D4h
  7.  
  8. ; GUID {EBBC7C04-315E-11D2-B62F-006097DF5BD4}
  9. IID_IProgressDialog \
  10.     dd 0EBBC7C04h
  11.     dw 0315Eh
  12.     dw 011D2h
  13.     db 0B6h, 02Fh, 000h, 060h, 097h, 0DFh, 05Bh, 0D4h
  14.  
  15. ; IID_IProgressDialog Interface
  16. struct IProgressDialog
  17.     ; IUnknown
  18.     QueryInterface      dd ?
  19.     AddRef              dd ?
  20.     Release             dd ?
  21.     ; IProgressDialog
  22.     StartProgressDialog dd ?
  23.     StopProgressDialog  dd ?
  24.     SetTitle            dd ?
  25.     SetAnimation        dd ?
  26.     HasUserCancelled    dd ?
  27.     SetProgress         dd ?
  28.     SetProgress64       dd ?
  29.     SetLine             dd ?
  30.     SetCancelMsg        dd ?
  31.     Timer               dd ?
  32. ends
  33.  
  34. PDTIMER_RESET  = 0x00000001
  35. PDTIMER_PAUSE  = 0x00000002
  36. PDTIMER_RESUME = 0x00000003
  37.  
  38. PROGDLG_NORMAL          = 0x00000000
  39. PROGDLG_MODAL           = 0x00000001
  40. PROGDLG_AUTOTIME        = 0x00000002
  41. PROGDLG_NOTIME          = 0x00000004
  42. PROGDLG_NOMINIMIZE      = 0x00000008
  43. PROGDLG_NOPROGRESSBAR   = 0x00000010
  44. PROGDLG_MARQUEEPROGRESS = 0x00000020
  45. PROGDLG_NOCANCEL        = 0x00000040
Окно прогресса создается, настраивается и управляется при помощи методов интерфейса IProgressDialog.

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

Добавление элементов и задач в Jump List приложения

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

Добавление элементов и задач в Jump List приложения

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

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

Получение и изменение обоев рабочего стола на Ассемблере

14.01.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Тема обоев рабочего стола Windows уже поднималась тут несколько раз, но это были, в основном, какие-то готовые программные решения. Настало время заглянуть "под капот" системы и посмотреть, как оно устроено. А лучшего инструмента, чем Ассемблер, для этих целей сложно придумать.

Начнем с получения информации об установленных обоях рабочего стола. Тут ничего сложного, достаточно вызвать функцию SystemParametersInfo с параметром SPI_GETDESKWALLPAPER.
  1.         SPI_GETDESKWALLPAPER = 0x0073
  2.  
  3.         invoke  SystemParametersInfo,SPI_GETDESKWALLPAPER,\
  4.                 MAX_PATH,szPath,0
  5.         ; szPath -> строка пути к файлу обоев
После выполнения этого кода в переменную szPath будет записана строка с расположением файла обоев на диске. Больше никакой информации типа положения изображения получить нельзя. В результате экспериментов выяснилось, что при смене обоев через системное меню "Персонализация", выбранный файл с изображением копируется в папку с пользовательскими темами, а при программной установке остается на месте. Особой практической пользы в этом знании нет, просто интересный факт.

Теперь переходим к смене обоев рабочего стола. В интернетах для этих целей обычно рекомендуют использовать упомянутую выше функцию SystemParametersInfo с параметром SPI_SETDESKWALLPAPER. Код получается минимальный, все очень просто реализуется, выглядит на первый взгляд стильно, модно, молодежно.
  1. ; Путь к файлу с новыми обоями рабочего стола
  2. szPath  db 'c:\windows\wallpaper.bmp',0
  3.  
  4.         SPI_SETDESKWALLPAPER  = 20
  5.         SPIF_SENDWININICHANGE = 2
  6.         SPIF_UPDATEINIFILE    = 1
  7.  
  8.         invoke  SystemParametersInfo,SPI_SETDESKWALLPAPER,\
  9.                 0,szPath,SPIF_UPDATEINIFILE+SPIF_SENDWININICHANGE
Минусы этого способа перекрывают все плюсы. Нет возможности настраивать режим отображения обоев. Новые обои отображаются в том же положении, в котором были установлены текущие, если старое и новое изображения имеют разные пропорции, то результат будет печальным. А главное, что в некоторых случаях невозможно использовать файлы графических форматов кроме BMP, хотя через меню "Персонализация" они устанавливаются без вопросов.

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

prev 01 02 03 04 05 06 07 08 09 ... 62
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2023
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.12 сек. / MySQL: 3 (0.0523 сек.) / Память: 4.75 Mb
Наверх