具体描述:
   我做了一个抓图程序,是网络版的!其中遇见的问题如下
 如果被控制端(也就是要抓的对象)使用应用进程的方式运行,则在被控制端可以生成想要的bmp文件,如果被控制端使用服务进程的方式运行,则在被控制端可以生成的bmp文件始终是黑屏,这是为什么?而且应用进程和服务进程两者的抓图功能的代码完全没有改变,请教高手!

解决方案 »

  1.   

    BOOL CaptureScreen(int sock)
    {
        HBITMAP     mhBitmap;
        char   cSendData[1024*256];
    char cPath[128];
    CString StrTemp,StrPath;
    int i,ret;
    HWND hWnd;
    WORD fPrintArea=1;
    hWnd=GetDesktopWindow (); 
    mhBitmap = CopyWindowToBitmap(NULL , hWnd, 1);
    HBITMAP     hBitmap = NULL;
    if (!hWnd)         
    return NULL; 
    HPALETTE hPal = NULL;
    hPal = GetSystemPalette(NULL); 
    if(!hPal)
    {
    return NULL;
    }

    DWORD   dwFlags = NULL;
    DWORD   dCompression = BI_RLE8; // BI_RLE8 / BI_RLE4 / BI_RGB;
    HANDLE hDIB = ChangeBitmapFormat(mhBitmap, //m_pPictureBox->GetBitmap(),
    HIWORD(dwFlags),                  
    dCompression, 
    hPal , 
    NULL);
    if(hDIB)
    { GetCurrentDirectory(sizeof(cPath),cPath);
    StrPath=cPath;
    StrPath+="\\";
    StrPath+="1.bmp";
    SaveDIB(hDIB,StrPath); //dlg.m_ofn.lpstrFile);
    }
    return true;
    }
      

  2.   

    再者,你这个 int sock  参数有什么用?
      

  3.   

    GetDeskTopWindow不适合在服务中
    取得的hwnd也不是桌面的句柄