4

I noticed that when I press PrntScrn while an IRM-protected email is open in Outlook 2013, the email's window is replaced with a solid black rectangle when I paste the screenshot into mspaint.

I'm not aware of any "Screenshot" window message being sent to windows, so how is this feature implemented? I never see any black pixels on my monitors so I don't think it has a keyboard hook to listen for PrntScrn and then paints the window black.

Kara
  • 6,115
  • 16
  • 50
  • 57
Dai
  • 141,631
  • 28
  • 261
  • 374

1 Answers1

10

Using the WinAPI function SetWindowDisplayAffinity with the WDA_MONITOR affinity before showing the window.

SetWindowDisplayAffinity(hwnd, WDA_MONITOR);  // Should, of course, check return value
ShowWindow(hwnd, SW_NORMAL);

Note this only works in Windows 7 and higher, only for a certain set of "public operating system features and APIs", and only when the window is DWM-composited. See the two paragraphs in the Remarks section of the linked documentation.

Ken White
  • 123,280
  • 14
  • 225
  • 444