#Include <WinAPIEx.au3>
$bBmp = _ScreenToBinary()
MsgBox(0, '', $bBmp)
Func _ScreenToBinary()
Local $tBD, $tBI, $W, $H, $hBitmap, $hDesktop, $hSrcDC, $hDstDC, $hDstSv, $pBits, $Bytes
$W = @DesktopWidth
$H = @DesktopHeight
$tBD = DllStructCreate('ushort bfType;align 2;dword bfSize;ushort bfReserved1;ushort bfReserved2;dword bfOffBits;' & $tagBITMAPINFOHEADER & 'byte Bits[' & ($W * $H * 3) & ']')
$tBI = DllStructCreate($tagBITMAPINFOHEADER, DllStructGetPtr($tBD, 'biSize'))
DllStructSetData($tBD, 'bfType', 0x4D42)
DllStructSetData($tBD, 'bfSize', DllStructGetSize($tBD))
DllStructSetData($tBD, 'bfReserved1', 0)
DllStructSetData($tBD, 'bfReserved2', 0)
DllStructSetData($tBD, 'bfOffBits', 14 + 40)
DllStructSetData($tBI, 'biSize', DllStructGetSize($tBI))
DllStructSetData($tBI, 'biWidth', $W)
DllStructSetData($tBI, 'biHeight', -$H)
DllStructSetData($tBI, 'biPlanes', 1)
DllStructSetData($tBI, 'biBitCount', 24)
DllStructSetData($tBI, 'biCompression', $BI_RGB)
$hBitmap = _WinAPI_CreateDIBSection(0, $tBI, $DIB_RGB_COLORS, $pBits)
$hDesktop = _WinAPI_GetDesktopWindow()
$hSrcDC = _WinAPI_GetDC($hDesktop)
$hDstDC = _WinAPI_CreateCompatibleDC($hSrcDC)
$hDstSv = _WinAPI_SelectObject($hDstDC, $hBitmap)
_WinAPI_BitBlt($hDstDC, 0, 0, $W, $H, $hSrcDC, 0, 0, $SRCCOPY)
_WinAPI_SelectObject($hDstDC, $hDstSv)
_WinAPI_ReleaseDC($hDesktop, $hSrcDC)
_WinAPI_DeleteDC($hDstDC)
_WinAPI_GetBitmapBits($hBitmap, $W * $H * 3, DllStructGetPtr($tBD, 'Bits'))
_WinAPI_DeleteObject($hBitmap)
Return Binary(DllStructGetData(DllStructCreate('byte[' & DllStructGetSize($tBD) & ']', DllStructGetPtr($tBD)), 1))
EndFunc ;==>_ScreenToBinary