Blog. Just Blog

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

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

Работа с Desktop Window Manager на Ассемблере

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

Работа с Desktop Window Manager на Ассемблере

Начиная с Windows Vista, в составе системы появился Desktop Window Manager, он же Диспетчер рабочего стола. Этот компонент обеспечивает визуальные эффекты и возможности интерфейса Windows Aero, например, такие как полупрозрачные заголовки окон, Aero Peek, Flip3D и живые миниатюры окон на таскбаре при наведении на него мышкой. Для взаимодействия с Desktop Window Manager разработчикам программ предоставляется целый набор функций API, с некоторыми из этих функций мы сегодня научимся работать.

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

Красивый градиентный ProgressBar на Ассемблере

25.07.2016 | Категория: Образ мышления: Assembler | Автор: ManHunter
Элемент ProgressBar, он же индикатор прогресса, используется в тех случаях, когда нужно показать пользователю степень завершения какого-либо действия. Есть стандартный элемент msctls_progress32, но он практически не поддается настройке в плане дизайна. Например, его нельзя сделать градиентным, чтобы заливка плавно перетекала от зеленого, через желтый и до красного. Но можно нарисовать красивую полосу ProgressBar самостоятельно. Идею я позаимствовал у kero, знаю, что он сюда иногда заглядывает и надеюсь, что он будет не против. Оригинал написан на MASM, я доработал его и портировал на FASM.


Принцип создания градиентного ProgressBar

Принцип создания градиентного прогрессбара заключается в том, что на элемент STATIC на всю его площадь накладывается готовое изображение. Затем создается дополнительное непрозрачное окно, являющееся дочерним к STATIC и расположенное поверх него. Регулируя размер и положение этого дочернего окна, открывается та или иная площадь изображения, пропорционально нужному проценту заполнения. Это чем-то напоминает создание рейтингов на CSS. Еще одна хитрость заключается в том, что изображение прогрессбара загружается из ресурсов функцией LoadImage, которая позволяет сразу указывать нужные размеры. Если исходное изображение меньше, то оно автоматически растягивается. Таким образом, для создания цветного прогрессбара достаточно однопиксельного изображения, а из крохотного bitmap'а шириной всего в три пиксела получается красивый градиентный прогрессбар любого размера.

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

Программы для работы с окнами приложений

01.07.2016 | Категория: Темная сторона Силы | Автор: ManHunter

Программы для работы с окнами приложений

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

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

Как на Ассемблере сделать скриншот отдельного окна

02.11.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter
Одна из интересных задач при работе с окнами - захват и сохранение скриншота выбранного окна или всего экрана целиком. Во многих руководствах по программированию для этого рекомендуют использовать функцию BitBlt.
  1.         ; Захват отдельного окна через BitBlt
  2.         invoke  GetWindowDC,[hWnd]
  3.         mov     [windowDC],eax
  4.  
  5.         invoke  CreateCompatibleDC,[windowDC]
  6.         mov     [newDC],eax
  7.  
  8.         ; Создать пустой битмап для скриншота
  9.         invoke  CreateCompatibleBitmap,[windowDC],[window_width],[window_height]
  10.         mov     [hBitmap],eax
  11.  
  12.         invoke  SelectObject,[newDC],[hBitmap]
  13.  
  14.         ; Флаг для захвата полупрозрачных окон
  15.         CAPTUREBLT = 0x40000000
  16.         invoke  BitBlt,[newDC],0,0,[window_width],[window_height],[windowDC],\
  17.                 0,0,SRCCOPY+CAPTUREBLT
  18.         ; Теперь в [hBitmap] находится изображение (Bitmap) окна
Флаг CAPTUREBLT обеспечивает захват полупрозрачных окон с альфа-каналом. Способ реально рабочий, очень простой в реализации, но у него есть один огромный недостаток. Если окно, с которого требуется сделать снимок, перекрыто другими окнами или частично находится за пределами экрана, то оно так и будет сохранено с перекрывающими кусками чужих окон, а отсутствующая на экране область и вовсе будет заменена черным пятном.

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

Эффект водной поверхности на Ассемблере

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

Эффект водной поверхности на Ассемблере

Бесконечно можно смотреть на три вещи: как горит огонь, как течет вода и как работают другие люди. К горящему огню мы вернемся как-нибудь в другой раз, а сегодня я предлагаю полюбоваться на эффект водной поверхности, реализованный на чистом Ассемблере. Я неоднократно встречал этот эффект в патчах и кейгенах разных крякерских команд и считаю его одним из лучших визуальных эффектов. Одно время даже была мысль рипнуть его из готовых exe-файлов, но потом мне попался оригинал исходника на MASM. Недолго думая, я портировал его на FASM и с огромным удовольствием буду использовать в своих релизах.

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

01 ... 05 06 07 08 09 10 11 ... 14
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2023
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0074 сек.) / Память: 4.5 Mb
Наверх