Office 2013如何为IRM实施黑色窗口?

Dai*_*Dai 3 winapi ms-office

我注意到当我在Outlook 2013中打开受IRM保护的电子邮件时按PrntScrn时,当我将屏幕截图粘贴到mspaint时,电子邮件的窗口将替换为纯黑色矩形.

我不知道有任何"屏幕截图"窗口消息被发送到Windows,那么这个功能是如何实现的?我从来没有在显示器上看到任何黑色像素,因此我认为它没有键盘钩子来侦听PrntScrn然后将窗口涂成黑色.

Ken*_*ite 7

在显示窗口之前使用SetWindowDisplayAffinity具有WDA_MONITOR亲和力的WinAPI函数.

SetWindowDisplayAffinity(hwnd, WDA_MONITOR);  // Should, of course, check return value
ShowWindow(hwnd, SW_NORMAL);
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于Windows 7及更高版本,仅适用于某些"公共操作系统功能和API",并且仅在窗口是DWM合成时才有效.请参阅链接文档的" 备注"部分中的两个段落.