2019-01-05 20:21:43 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "IOCPServer.h"
|
2019-01-20 20:04:11 +08:00
|
|
|
|
#include "..\..\client\CursorInfo.h"
|
2025-11-23 10:57:52 +01:00
|
|
|
|
#include "VideoDlg.h"
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
2025-03-30 18:03:01 +08:00
|
|
|
|
extern "C"
|
|
|
|
|
|
{
|
|
|
|
|
|
#include "libavcodec\avcodec.h"
|
|
|
|
|
|
#include "libavutil\avutil.h"
|
|
|
|
|
|
#include "libyuv\libyuv.h"
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef _WIN64
|
|
|
|
|
|
// https://github.com/Terodee/FFMpeg-windows-static-build/releases
|
|
|
|
|
|
#pragma comment(lib,"libavcodec.lib")
|
|
|
|
|
|
#pragma comment(lib,"libavutil.lib")
|
|
|
|
|
|
#pragma comment(lib,"libswresample.lib")
|
|
|
|
|
|
|
|
|
|
|
|
#pragma comment(lib,"libyuv/libyuv.lib")
|
|
|
|
|
|
#else
|
2025-04-19 21:04:11 +08:00
|
|
|
|
#pragma comment(lib,"x264/libx264_x64.lib")
|
|
|
|
|
|
#pragma comment(lib,"libyuv/libyuv_x64.lib")
|
|
|
|
|
|
// https://github.com/ShiftMediaProject/FFmpeg
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
|
#pragma comment(lib,"libavcodec_x64d.lib")
|
|
|
|
|
|
#pragma comment(lib,"libavutil_x64d.lib")
|
|
|
|
|
|
#pragma comment(lib,"libswresample_x64d.lib")
|
|
|
|
|
|
#else
|
|
|
|
|
|
#pragma comment(lib,"libavcodec_x64.lib")
|
|
|
|
|
|
#pragma comment(lib,"libavutil_x64.lib")
|
|
|
|
|
|
#pragma comment(lib,"libswresample_x64.lib")
|
|
|
|
|
|
#endif
|
2025-03-30 18:03:01 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#pragma comment(lib, "Mfplat.lib")
|
|
|
|
|
|
#pragma comment(lib, "Mfuuid.lib")
|
|
|
|
|
|
#pragma comment(lib, "Bcrypt.lib")
|
|
|
|
|
|
#pragma comment(lib, "Strmiids.lib")
|
|
|
|
|
|
|
2019-01-05 20:21:43 +08:00
|
|
|
|
// CScreenSpyDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
|
|
2025-06-28 23:52:26 +08:00
|
|
|
|
class CScreenSpyDlg : public DialogBase
|
2019-01-05 20:21:43 +08:00
|
|
|
|
{
|
2025-10-15 04:32:59 +08:00
|
|
|
|
DECLARE_DYNAMIC(CScreenSpyDlg)
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
|
|
|
|
|
public:
|
2025-10-15 04:32:59 +08:00
|
|
|
|
CScreenSpyDlg(CWnd* Parent, Server* IOCPServer=NULL, CONTEXT_OBJECT *ContextObject=NULL);
|
|
|
|
|
|
virtual ~CScreenSpyDlg();
|
|
|
|
|
|
|
|
|
|
|
|
VOID SendNext(void);
|
|
|
|
|
|
VOID OnReceiveComplete();
|
|
|
|
|
|
HDC m_hFullDC;
|
|
|
|
|
|
HDC m_hFullMemDC;
|
|
|
|
|
|
HBITMAP m_BitmapHandle;
|
|
|
|
|
|
PVOID m_BitmapData_Full;
|
|
|
|
|
|
LPBITMAPINFO m_BitmapInfor_Full;
|
|
|
|
|
|
VOID DrawFirstScreen(void);
|
|
|
|
|
|
VOID DrawNextScreenDiff(bool keyFrame);
|
|
|
|
|
|
BOOL m_bIsFirst;
|
|
|
|
|
|
ULONG m_ulHScrollPos;
|
|
|
|
|
|
ULONG m_ulVScrollPos;
|
|
|
|
|
|
VOID DrawTipString(CString strString);
|
|
|
|
|
|
|
|
|
|
|
|
POINT m_ClientCursorPos;
|
|
|
|
|
|
BYTE m_bCursorIndex;
|
|
|
|
|
|
BOOL m_bIsTraceCursor;
|
|
|
|
|
|
CCursorInfo m_CursorInfo; //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ϵͳ<CFB5>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
VOID SendCommand(const MYMSG* Msg);
|
|
|
|
|
|
void SendScaledMouseMessage(MSG* pMsg, bool makeLP);
|
|
|
|
|
|
VOID UpdateServerClipboard(char *szBuffer,ULONG ulLength);
|
|
|
|
|
|
VOID SendServerClipboard(void);
|
|
|
|
|
|
|
|
|
|
|
|
BOOL m_bIsCtrl;
|
|
|
|
|
|
LPBYTE m_szData;
|
|
|
|
|
|
BOOL m_bSend;
|
|
|
|
|
|
ULONG m_ulMsgCount;
|
|
|
|
|
|
int m_FrameID;
|
2025-11-23 10:57:52 +01:00
|
|
|
|
bool m_bHide = false;
|
2025-10-15 04:32:59 +08:00
|
|
|
|
|
|
|
|
|
|
BOOL SaveSnapshot(void);
|
|
|
|
|
|
// <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
enum { IDD = IDD_DIALOG_SCREEN_SPY };
|
|
|
|
|
|
|
|
|
|
|
|
BOOL m_bFullScreen;
|
|
|
|
|
|
|
|
|
|
|
|
WINDOWPLACEMENT m_struOldWndpl;
|
|
|
|
|
|
|
|
|
|
|
|
AVCodec* m_pCodec;
|
|
|
|
|
|
AVCodecContext* m_pCodecContext;
|
|
|
|
|
|
AVPacket m_AVPacket;
|
|
|
|
|
|
AVFrame m_AVFrame;
|
|
|
|
|
|
|
|
|
|
|
|
clock_t m_lastMouseMove; // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
POINT m_lastMousePoint;// <20>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
BOOL m_bAdaptiveSize = TRUE;
|
|
|
|
|
|
HCURSOR m_hRemoteCursor = NULL;
|
|
|
|
|
|
CRect m_CRect;
|
|
|
|
|
|
double m_wZoom=1, m_hZoom=1;
|
|
|
|
|
|
bool m_bMouseTracking = false;
|
|
|
|
|
|
|
2025-11-23 10:57:52 +01:00
|
|
|
|
CString m_aviFile;
|
|
|
|
|
|
CBmpToAvi m_aviStream;
|
|
|
|
|
|
void OnTimer(UINT_PTR nIDEvent);
|
|
|
|
|
|
|
2025-10-15 04:32:59 +08:00
|
|
|
|
bool Decode(LPBYTE Buffer, int size);
|
|
|
|
|
|
void EnterFullScreen();
|
|
|
|
|
|
bool LeaveFullScreen();
|
|
|
|
|
|
|
|
|
|
|
|
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
|
|
|
|
|
|
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
|
|
|
|
|
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
|
|
|
|
|
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
|
|
|
|
|
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
|
|
|
|
|
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
|
|
|
|
|
afx_msg void OnMouseLeave();
|
|
|
|
|
|
afx_msg void OnKillFocus(CWnd* pNewWnd);
|
|
|
|
|
|
afx_msg void OnSize(UINT nType, int cx, int cy);
|
2025-11-09 00:49:34 +08:00
|
|
|
|
afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
|
2019-01-10 19:35:03 +08:00
|
|
|
|
|
2019-01-05 20:21:43 +08:00
|
|
|
|
protected:
|
2025-10-15 04:32:59 +08:00
|
|
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧<><D6A7>
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
2025-10-15 04:32:59 +08:00
|
|
|
|
DECLARE_MESSAGE_MAP()
|
2019-01-05 20:21:43 +08:00
|
|
|
|
public:
|
2025-10-15 04:32:59 +08:00
|
|
|
|
virtual BOOL OnInitDialog();
|
|
|
|
|
|
afx_msg void OnClose();
|
|
|
|
|
|
afx_msg void OnPaint();
|
|
|
|
|
|
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
|
|
|
|
|
|
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
|
|
|
|
|
void OnLButtonDblClk(UINT nFlags, CPoint point);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
};
|