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

Winapi Office 2013如何为IRM实施黑色窗口?,winapi,ms-office,Winapi,Ms Office,我注意到,当我在Outlook 2013中打开受IRM保护的电子邮件时按PrntScrn,当我将屏幕截图粘贴到mspaint中时,该电子邮件的窗口将替换为一个纯黑色矩形 我不知道有任何“屏幕截图”窗口消息被发送到windows,那么这个功能是如何实现的呢?我从未在显示器上看到任何黑色像素,因此我认为它没有键盘挂钩来监听PrntScrn,然后将窗口涂成黑色。在显示窗口之前,使用WinAPI函数和WDA\u显示器关联 SetWindowDisplayAffinity(hwnd, WDA_MONITO

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

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

在显示窗口之前,使用WinAPI函数和
WDA\u显示器
关联

SetWindowDisplayAffinity(hwnd, WDA_MONITOR);  // Should, of course, check return value
ShowWindow(hwnd, SW_NORMAL);
请注意,这仅适用于Windows 7及更高版本,仅适用于特定的“公共操作系统功能和API”,并且仅适用于窗口是DWM合成的情况。请参阅链接文档备注部分的两段