资源简介
把屏幕分成四块截图。每次都会检测当前截图与上一课截图是否变化。通过CRC值来对比
代码片段和文件信息
// Crc32.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include “StdAfx.h“
#include “Crc.h“
CCRC crc32;
CCRC::CCRC()
{
InitCrc32();
}
CCRC::~CCRC()
{
}
DWORD CCRC::Reflect(DWORD dwRef BYTE ch)
{
DWORD value = 0;
for(int i = 1; i < (ch + 1); i++)
{
if(dwRef & 1)
value |= 1 << (ch - i);
dwRef >>= 1;
}
return value;
}
void CCRC::InitCrc32()
{
int i j;
for (i = 0; i < CRC32_TABLE_NUM; i++)
{
m_dwCrc32Table[i] = Reflect(i 8) << 24;
for (j = 0; j < 8; j++)
{
m_dwCrc32Table[i] = (m_dwCrc32Table[i] << 1) ^ (m_dwCrc32Table[i] & (1 << 31) ? CRC32_MAGIC : 0);
}
m_dwCrc32Table[i] = Reflect(m_dwCrc32Table[i] 32);
}
}
DWORD CCRC::GetBufCrc32(LPBYTE lpBuf DWORD dwSize)
{
StartBlock();
if (AppendBlock(lpBuf dwSize))
{
return GetBlockCrc32();
}
else
{
return CRC32_INVALID_VALUE;
}
}
void CCRC::StartBlock()
{
m_dwCrc32Block = CRC32_INVALID_VALUE;
}
BOOL CCRC::AppendBlock(LPBYTE lpBuf DWORD dwSize)
{
if (NULL == lpBuf)
{
return FALSE;
}
DWORD i;
for (i=0; i {
m_dwCrc32Block = (m_dwCrc32Block >> 8) ^ m_dwCrc32Table[(m_dwCrc32Block & 0xFF) ^ lpBuf[i]];
}
return TRUE;
}
DWORD CCRC::GetBlockCrc32()
{
if (CRC32_INVALID_VALUE == m_dwCrc32Block)
{
return CRC32_INVALID_VALUE;
}
return (m_dwCrc32Block^CRC32_INVALID_VALUE);
}
DWORD CCRC::GetFileCrc32(LPCTSTR szFile)
{
StartBlock();
HANDLE hFile;
hFile = ::CreateFile(szFile
GENERIC_READ
0
NULL
OPEN_ALWAYS
FILE_ATTRIBUTE_NORMAL
NULL
);
if (INVALID_HANDLE_VALUE != hFile)
{
DWORD dwFileSize;
dwFileSize = GetFileSize(hFile NULL);
if (dwFileSize > 0)
{
HANDLE hFileMapping;
hFileMapping = ::CreateFileMapping(hFile NULL PAGE_READONLY 0 0 NULL);
if (NULL != hFileMapping)
{
LPBYTE pbFile = (PBYTE)::MapViewOfFile(hFileMapping FILE_MAP_READ 0 0 0);
if (NULL != hFileMapping)
{
AppendBlock(pbFile dwFileSize);
::UnmapViewOfFile(pbFile);
}
::CloseHandle(hFileMapping);
}
}
::CloseHandle(hFile);
}
return GetBlockCrc32();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2249 2012-07-19 18:37 屏幕实时传输\屏幕实时传输\Crc.cpp
文件 766 2012-07-19 18:37 屏幕实时传输\屏幕实时传输\Crc.h
文件 2234 2014-03-01 12:37 屏幕实时传输\屏幕实时传输\Debug\cl.command.1.tlog
文件 65866 2014-03-01 12:37 屏幕实时传输\屏幕实时传输\Debug\CL.read.1.tlog
文件 1676 2014-03-01 12:37 屏幕实时传输\屏幕实时传输\Debug\CL.write.1.tlog
文件 37581 2014-03-01 10:46 屏幕实时传输\屏幕实时传输\Debug\Crc.obj
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
文件 2 2014-03-01 12:32 屏幕实时传输\屏幕实时传输\Debug\li
............此处省略151个文件信息
- 上一篇:STM32全系列芯片封装库,最齐全封装库
- 下一篇:VDM51.dll
评论
共有 条评论