Windows 10 Windows 10 iVirtualDesktop管理器::将窗口移动到桌面

Windows 10 Windows 10 iVirtualDesktop管理器::将窗口移动到桌面,windows-10,virtual-desktop,Windows 10,Virtual Desktop,我一直在尝试使用在虚拟桌面之间移动窗口 在我自己的windows上使用它效果很好,但不幸的是,当我尝试在另一个进程的窗口上使用它时,由于E_ACCESSDENIED而失败 遗憾的是,作为管理员发布还不够好。 我是否遗漏了一些我对COM接口不了解的东西,或者它只是设计得很糟糕?您可以移动一个不属于执行进程的窗口,但它需要使用其他未记录的COM对象 在ImmersiveShell中查询IApplicationViewCollection和iVirtualDesktopManager内部的实例。 获取

我一直在尝试使用在虚拟桌面之间移动窗口

在我自己的windows上使用它效果很好,但不幸的是,当我尝试在另一个进程的窗口上使用它时,由于E_ACCESSDENIED而失败

遗憾的是,作为管理员发布还不够好。
我是否遗漏了一些我对COM接口不了解的东西,或者它只是设计得很糟糕?

您可以移动一个不属于执行进程的窗口,但它需要使用其他未记录的COM对象

在ImmersiveShell中查询IApplicationViewCollection和iVirtualDesktopManager内部的实例。 获取要移动的窗口的hwnd。 听起来您已经知道了目标桌面ID,但您也可以使用IVirtualDesktopManager内部方法GetAdjacentDesktop和GetDesktops来查找更多信息。 调用IAApplicationViewCollection::GetViewForHwnd以获取视图。 调用IVirtualDesktop管理器内部::MoveViewToDesktop以移动视图。 代码参考:

封装C++中的相关对象,并构建一个可以使用的本机DLL。 将它们包装在C中,并提供.NET DLL和GUI。 记录接口的不同版本。 演示如何使用iVirtualDesktopManagerName在自动热键中按索引选择虚拟桌面。我正在开发一个版本,该版本还包装了IApplicationViewCollection,以支持如上所述移动任何给定窗口。
您尝试移动哪个流程?不是按您希望的方式设计的!=糟糕的设计:-。从文档中可以看出,这似乎只是为了移动自己的窗口以避免糟糕的用户体验;它听起来不像是管理虚拟桌面的通用API。你有没有就MSDN主题提供反馈?@magicandre1981真的吗,探险家,skype,firefox@PeterTorr-MSFT你说得对,这更像是什么意思?顺便说一句,如果在桌面上移动窗口是糟糕的用户体验,为什么ShowWindowSW\u HIDE可以在任何窗口上工作?对我来说更糟!不,我没有,但这是个好主意,谢谢:-你找到解决办法了吗?谢谢