⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cescreengrabview.h

📁 通过同步软件来获取移动智能设备屏幕画面
💻 H
字号:
// CeScreenGrabView.h : interface of the CCeScreenGrabView class
//
/////////////////////////////////////////////////////////////////////////////

#pragma once

#include "dibsection.h"
#include <atlcrack.h>
#include <atlmisc.h>
#include "RemoteAPI.h"

typedef struct _MOUSEMSG
{
	UINT	nMsg;
	WPARAM	wParam;
	LPARAM	lParam;
} MOUSEMSG;


class CCeScreenGrabView : public CScrollWindowImpl<CCeScreenGrabView>
{
public:
	DECLARE_WND_CLASS(NULL)

	CCeScreenGrabView() 
	:	m_bConnect(false)
	{
	}

	void CopyToClipboard()
	{
		if(m_dib.GetSafeHandle() == NULL)
			return;

		if(OpenClipboard())
		{
			CDC		dcMemSrc,
					dcMemTgt;
			HDC		hDC	= GetDC();
			HBITMAP	hBmp;

			dcMemSrc.CreateCompatibleDC(hDC);
			dcMemTgt.CreateCompatibleDC(hDC);

			hBmp = CreateCompatibleBitmap(hDC, m_dib.GetWidth(), m_dib.GetHeight());

			dcMemSrc.SelectBitmap(m_dib.GetSafeHandle());
			dcMemTgt.SelectBitmap(hBmp);

			dcMemTgt.BitBlt(0, 0, m_dib.GetWidth(), m_dib.GetHeight(), dcMemSrc, 0, 0, SRCCOPY);

			EmptyClipboard();
			SetClipboardData(CF_BITMAP, hBmp);
			CloseClipboard();
		}
	}

	void GrabCeScreen()
	{
		if(m_bConnect)
		{
			DWORD	dwOutput;
			BYTE*	pBuffer;
			HRESULT	hr;

			hr = m_rapi.Invoke(_T("CeScreenCapture.dll"), _T("CeScreenCapture"), 0, NULL, &dwOutput, &pBuffer, NULL, 0);
			if(SUCCEEDED(hr))
			{
				if(dwOutput > sizeof(DIBINFO))
				{
					BITMAPINFO*	pBitmap = (DIBINFO*)pBuffer;
					BYTE*		pBits	= pBuffer + sizeof(DIBINFO);

					SetScrollSize(pBitmap->bmiHeader.biWidth, pBitmap->bmiHeader.biHeight);
					m_dib.SetBitmap(pBitmap, pBits);
					Invalidate();
					UpdateWindow();
				}

				m_rapi.FreeBuffer(pBuffer);
			}
		}
	}

	BOOL PreTranslateMessage(MSG* pMsg)
	{
		pMsg;
		return FALSE;
	}

	void DoPaint(CDCHandle dc)
	{
		HBITMAP	hBmp = m_dib;

		if(hBmp)
		{
			CDC	dcMem;

			dcMem.CreateCompatibleDC(dc);
			dcMem.SelectBitmap(hBmp);

			dc.BitBlt(0, 0, m_dib.GetWidth(), m_dib.GetHeight(), dcMem, 0, 0, SRCCOPY);
		}
	}

	BEGIN_MSG_MAP(CCeScreenGrabView)
		CHAIN_MSG_MAP(CScrollWindowImpl<CCeScreenGrabView>)
	END_MSG_MAP()

// Handler prototypes (uncomment arguments if needed):
//	LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
//	LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
//	LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)

private:
	CDIBSection	m_dib;
	CRemoteAPI	m_rapi;
	bool		m_bConnect;


public:

	bool Connect()
	{
		RAPIINIT	ri;
		HRESULT		hr;

		if(m_bConnect)
			return 0;

		ri.cbSize		= sizeof(ri);
		ri.heRapiInit	= NULL;
		ri.hrRapiInit	= S_OK;

		hr = m_rapi.InitEx(&ri);
		if(SUCCEEDED(hr))
		{
			if(WaitForSingleObject(ri.heRapiInit, 5000) == WAIT_OBJECT_0)
			{
				m_bConnect = true;

				GrabCeScreen();
			}
		}

		return m_bConnect;
	}

	void Disconnect()
	{
		if(!m_bConnect)
			return;

		m_rapi.Uninit();
		m_bConnect = false;
	}
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -