Search code examples
cwindowswinapiscreenshotwinlogon

Take screenshot of desktop when Windows is locked (Win+L)


I want to take a screenshot of desktop while Windows is locked (with Win+L). Standard methods make a black screen, with code of pixel:

COLORREF color = GetPixel(hdc, x, y);

equal -1. Neither a user mode program nor a service could capture a useful image. Any ideas?


Solution

  • GetPixel and BitBlt won't work when the desktop isn't physically displayed on the monitor.

    You may have some luck capturing individual windows with PrintWindow. However, not all applications respond to PrintWindow calls the same way, so you may see glitches and/or blackness. You'll also need to capture each window individually.