Снимок экрана с проблемами C # и удаленного рабочего стола

У меня есть консольное приложение C sharp, которое несколько раз делает снимок экрана документа MS Word. Он отлично работает, но когда я помещаю это приложение на удаленный компьютер с Windows XP, оно работает нормально, пока я удален, т.е. мой удаленный рабочий стол виден, но если я запускаю свое приложение и выхожу из удаленного рабочего стола (минимизируйте его, даже не журнал off, который я хочу сделать ) снимки экрана пустые!

Приложение Screenshot запускается службой, которая запускается как пользователь SYSTEM.

Как мне сохранить работоспособность графического интерфейса для Windows, даже если нет подключенных пользователей?

Вот код, который я использую:

public Image CaptureWindow(IntPtr handle)
{
    // get te hDC of the target window
    IntPtr hdcSrc = User32.GetWindowDC(handle);
    // get the size
    User32.RECT windowRect = new User32.RECT();
    User32.GetWindowRect(handle, ref windowRect);
    int width = windowRect.right - windowRect.left;
    int height = windowRect.bottom - windowRect.top;
    // create a device context we can copy to
    IntPtr hdcDest = GDI32.CreateCompatibleDC(hdcSrc);
    // create a bitmap we can copy it to,
    // using GetDeviceCaps to get the width/height
    IntPtr hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc, width, height);
    // select the bitmap object
    IntPtr hOld = GDI32.SelectObject(hdcDest, hBitmap);
    // bitblt over
    GDI32.BitBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, 0, GDI32.SRCCOPY);
    // restore selection
    GDI32.SelectObject(hdcDest, hOld);
    // clean up 
    GDI32.DeleteDC(hdcDest);
    User32.ReleaseDC(handle, hdcSrc);

    // get a .NET image object for it
    Image img = Image.FromHbitmap(hBitmap);
    // free up the Bitmap object
    GDI32.DeleteObject(hBitmap);

    return img;
}

Обновление

В настоящее время я использую PrintWindow, который является единственным, что подошел ближе всего, так как ему удается захватить рамку окна (то есть кнопки свертывания, развертывания и закрытия), но внутренняя часть черная.

Хотя он не работал полностью, он доказал мне, что можно создать изображение из дескриптора окна, в то время как приложение даже не видно пользователю.

14
задан Benjamin 3 February 2014 в 14:06
поделиться