Как на Ассемблере сделать скриншот отдельного окна
02.11.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter
Одна из интересных задач при работе с окнами - захват и сохранение скриншота выбранного окна или всего экрана целиком. Во многих руководствах по программированию для этого рекомендуют использовать функцию BitBlt.Code (Assembler) : Убрать нумерацию
- ; Захват отдельного окна через BitBlt
- invoke GetWindowDC,[hWnd]
- mov [windowDC],eax
- invoke CreateCompatibleDC,[windowDC]
- mov [newDC],eax
- ; Создать пустой битмап для скриншота
- invoke CreateCompatibleBitmap,[windowDC],[window_width],[window_height]
- mov [hBitmap],eax
- invoke SelectObject,[newDC],[hBitmap]
- ; Флаг для захвата полупрозрачных окон
- CAPTUREBLT = 0x40000000
- invoke BitBlt,[newDC],0,0,[window_width],[window_height],[windowDC],\
- 0,0,SRCCOPY+CAPTUREBLT
- ; Теперь в [hBitmap] находится изображение (Bitmap) окна
Читать статью целиком »
Просмотров: 4469 | Комментариев: 8