向winlogon.exe注入远程线程,实现截屏,该如何解决

向winlogon.exe注入远程线程,实现截屏


我向 winlogon.exe 注入了一个远程线程,用来截屏,可截取到的屏幕如下,一片漆黑。

当我改向explorer.exe、calc.exe注入时,可正确截取屏幕。
这是为什么呢?

还有当我按下WinKey+L锁屏,来到如下界面时,也可正确截得屏幕。

截得屏幕如下:

截屏代码如下:
开发工具是VS2005。
C/C++ code

bool CutScreen()
{  
    //-----------------------------------------
    // 获取目标设备描述表指针
    CWindowDC *pDC=NULL;
    pDC=new CWindowDC(CWnd::GetDesktopWindow());

    // 创建内存设备描述表
    CDC memDC;
    memDC.CreateCompatibleDC(pDC);

    // 桌面大小
    CRect rect;
    GetWindowRect(GetDesktopWindow(),&rect);

    // 位图
    CBitmap Bitmap,*pOldBitmap;
    Bitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height()); // 创建与目标设备描述表兼容的位图
    pOldBitmap=memDC.SelectObject(&Bitmap);
    memDC.BitBlt(0,0,rect.Width(),rect.Height(),pDC,0,0,SRCCOPY);
    memDC.SelectObject(pOldBitmap);

    // 使用CImage类保存图片
    CImage img;
    img.Attach(Bitmap);
    img.Save("C:\\1.jpg");

    // 扫尾工作
    Bitmap.DeleteObject();
    pOldBitmap->DeleteObject();
    pDC->DeleteDC();
    memDC.DeleteDC();

    return true;
}



------解决方案--------------------
创建的线程首先OpenInputDesktop+SetThreadDesktop