Files
SimpleRemoter/client/ScreenSpy.h
2019-09-07 13:55:09 +08:00

96 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ScreenSpy.h: interface for the CScreenSpy class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SCREENSPY_H__5F74528D_9ABD_404E_84D2_06C96A0615F4__INCLUDED_)
#define AFX_SCREENSPY_H__5F74528D_9ABD_404E_84D2_06C96A0615F4__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define ALGORITHM_DIFF 1
#define COPY_ALL 1 // 拷贝全部屏幕不分块拷贝added by yuanyuanxiang 2019-1-7
#include "CursorInfo.h"
class CScreenSpy
{
private:
BYTE m_bAlgorithm; // 屏幕差异算法
ULONG m_ulbiBitCount; // 每像素位数
ULONG m_ulFullWidth; // 屏幕宽
ULONG m_ulFullHeight; //屏幕高
bool m_bZoomed; // 屏幕被缩放
double m_wZoom; // 屏幕横向缩放比
double m_hZoom; // 屏幕纵向缩放比
LPBITMAPINFO m_BitmapInfor_Full; // BMP信息
HWND m_hDeskTopWnd; //当前工作区的窗口句柄
HDC m_hFullDC; //Explorer.exe 的窗口设备DC
HDC m_hFullMemDC;
HBITMAP m_BitmapHandle;
PVOID m_BitmapData_Full;
HDC m_hDiffMemDC;
HBITMAP m_DiffBitmapHandle;
PVOID m_DiffBitmapData_Full;
ULONG m_RectBufferOffset; // 缓存区位移
BYTE* m_RectBuffer; // 缓存区
public:
CScreenSpy(ULONG ulbiBitCount);
virtual ~CScreenSpy();
int GetWidth()const {
return m_ulFullWidth;
}
int GetHeight() const {
return m_ulFullHeight;
}
bool IsZoomed() const {
return m_bZoomed;
}
double GetWZoom() const {
return m_wZoom;
}
double GetHZoom() const {
return m_hZoom;
}
const LPBITMAPINFO& GetBIData() const
{
return m_BitmapInfor_Full;
}
ULONG GetFirstScreenLength() const
{
return m_BitmapInfor_Full->bmiHeader.biSizeImage;
}
FORCEINLINE VOID WriteRectBuffer(LPBYTE szBuffer, ULONG ulLength)
{
memcpy(m_RectBuffer + m_RectBufferOffset, szBuffer, ulLength);
m_RectBufferOffset += ulLength;
}
LPVOID GetFirstScreenData();
LPVOID GetNextScreenData(ULONG* ulNextSendLength);
ULONG CompareBitmap(LPBYTE CompareSourData, LPBYTE CompareDestData, LPBYTE szBuffer, DWORD ulCompareLength);
VOID ScanScreen(HDC hdcDest, HDC hdcSour, ULONG ulWidth, ULONG ulHeight);
};
#endif // !defined(AFX_SCREENSPY_H__5F74528D_9ABD_404E_84D2_06C96A0615F4__INCLUDED_)