我正在开发一个UWP应用程序,为具有复杂物理限制的用户提供任务切换功能 . 此问题与尝试提供实时缩略图(如alt-tab和任务栏)有关 . 到目前为止,通过进程内完全信任组件进行必要的(winapi)调用并将信息传递回UWP应用程序,可以实现大部分功能 .

我使用 DwmRegisterThumbnailDwmUpdateThumbnailProperties 进行了测试WPF应用程序,它运行正常 .

但是,当我尝试在UWP /完全信任应用程序中实现此功能时,注册将失败 E_INVALIDARG . 根据MSDN,这可能是因为源窗口或目标窗口不是顶级窗口 . 在这种情况下,目标窗口是UWP应用程序的窗口句柄,源窗口是explorer.exe(在本例中为文件浏览器) . 两者都由 EnumWindows 列举,并不是其他窗口的子项 .

问题是完全信任方正在调用 DwmRegisterThumbnail ?我也试过从UWP那边打电话,但得到了相同的结果 . 我真的不希望能够从UWP方面拨打这些电话,因为它似乎违反了沙盒的性质 . 有没有办法做到这一点?


编辑:

我尝试了一个C UWP概念验证,但无法引用与DWM相关的任何内容 . 然后我找到this . 看起来DWW根本不适用于UWP .

我'm guessing the full-trust component can' t注册了UWP应用程序,因为,根据this

hwndDestination指定的窗口必须是桌面窗口本身,或者由调用DwmRegisterThumbnail的进程拥有 . 这是防止应用程序影响其他应用程序内容所必需的 .

如上所述,我尝试使用主机UWP应用程序的句柄调用完全信任组件 DwmRegisterThumbnail ,但它不是由UWP进程拥有的?

有没有人知道可用于完成缩略图/窗口预览的替代方法?