实现远程控制时怎么抓到客户端主机注销时的登录画面?我在客户端主机上的代理程序是一个服务程序,抓屏程序为:
hBit = GetSrcBit(BitWidth,BitHeight);
hDib = DDBtoDIB(hBit);//获得桌面图形
HBITMAP GetSrcBit(DWORD BitWidth,DWORD BitHeight)
{
HDC hdcmy,hbufferdc;
HBITMAP  hBit,hOldBitmap; hdcmy = CreateDC("DISPLAY",NULL,NULL,NULL);
hbufferdc = CreateCompatibleDC(hdcmy); hBit = CreateCompatibleBitmap(hdcmy, BitWidth, BitHeight); hOldBitmap = (HBITMAP)SelectObject(hbufferdc, hBit);
StretchBlt(hbufferdc, 0, 0, BitWidth, BitHeight,
hdcmy, 0, 0,SysWidth,SysHeight, SRCCOPY); hBit = (HBITMAP)SelectObject(hbufferdc, hOldBitmap);

DeleteObject(hOldBitmap);
ReleaseDC(NULL,hdcmy);
ReleaseDC(NULL,hbufferdc); return hBit;
}//---------------------------------------------------------------
//图形转换
HANDLE DDBtoDIB( HBITMAP bitmap) 
{
BITMAP bm;
BITMAPINFOHEADER bi;
    LPBITMAPINFOHEADER  lpbi;
DWORD dwLen;
HANDLE hDib;
HANDLE handle;
HDC  hdc;
HPALETTE hPal; hPal = (HPALETTE) GetStockObject(DEFAULT_PALETTE ); //获得位图信息
GetObject(bitmap,sizeof(bm),(LPSTR)&bm); // 初始化位图头信息
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = bm.bmWidth;
bi.biHeight  = bm.bmHeight;
bi.biPlanes  = 1; bi.biBitCount = 4;
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0; int ncolors = (1 << bi.biBitCount); 
if( ncolors> 256 ) 
ncolors = 0;
dwLen  = bi.biSize + ncolors * sizeof(RGBQUAD); hdc = GetDC(NULL);
hPal = SelectPalette(hdc,hPal,FALSE);
RealizePalette(hdc); hDib = GlobalAlloc(GMEM_FIXED,dwLen); if (!hDib){
SelectPalette(hdc,hPal,FALSE);
ReleaseDC(NULL,hdc);
return NULL;
} lpbi = (LPBITMAPINFOHEADER)hDib; *lpbi = bi; GetDIBits(hdc, bitmap, 0L, (DWORD)bi.biHeight,
(LPBYTE)NULL, (LPBITMAPINFO)lpbi, (DWORD)DIB_RGB_COLORS ); bi = *lpbi; if (bi.biSizeImage == 0)
{
bi.biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8) 
* bi.biHeight;
} dwLen += bi.biSizeImage;
if (handle = GlobalReAlloc(hDib, dwLen, GMEM_MOVEABLE))
hDib = handle;
else
{
GlobalFree(hDib); SelectPalette(hdc,hPal,FALSE);
ReleaseDC(NULL,hdc);
return NULL;
} lpbi = (LPBITMAPINFOHEADER)hDib; BOOL bgotbits = GetDIBits( hdc, bitmap,
0L,
(DWORD)bi.biHeight,
(LPBYTE)lpbi 
+ (bi.biSize + ncolors * sizeof(RGBQUAD)),
(LPBITMAPINFO)lpbi,
(DWORD)DIB_RGB_COLORS); if( !bgotbits )
{
GlobalFree(hDib);

SelectPalette(hdc,hPal,FALSE);
ReleaseDC(NULL,hdc);
return NULL;
} SelectPalette(hdc,hPal,FALSE);
ReleaseDC(NULL,hdc); return hDib;
}以上程序在客户端正常情况下抓屏正常,只是在注销时抓屏为全黑。登录后抓屏又正常。
这说明通讯一直没有中断。why?