如何在windows 10上使用powershell/.net在桌面之间移动窗口
我希望能够使用powershell启动进程,并将该进程创建的任何窗口移动到特定的虚拟桌面 有什么想法吗?通过IVirtualDesktopManager发布的帖子:如何在windows 10上使用powershell/.net在桌面之间移动窗口,powershell,windows-10,virtual-desktop,Powershell,Windows 10,Virtual Desktop,我希望能够使用powershell启动进程,并将该进程创建的任何窗口移动到特定的虚拟桌面 有什么想法吗?通过IVirtualDesktopManager发布的帖子: [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("a5cd92ff-29be-454c-8d04-d82879fb3f1b")] [System.Security.SuppressUnmanagedCodeSecurity
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("a5cd92ff-29be-454c-8d04-d82879fb3f1b")]
[System.Security.SuppressUnmanagedCodeSecurity]
public interface IVirtualDesktopManager
{
[PreserveSig]
int IsWindowOnCurrentVirtualDesktop(
[In] IntPtr TopLevelWindow,
[Out] out int OnCurrentDesktop
);
[PreserveSig]
int GetWindowDesktopId(
[In] IntPtr TopLevelWindow,
[Out] out Guid CurrentDesktop
);
[PreserveSig]
int MoveWindowToDesktop(
[In] IntPtr TopLevelWindow,
[MarshalAs(UnmanagedType.LPStruct)]
[In]Guid CurrentDesktop
);
}
[ComImport, Guid("aa509086-5ca9-4c25-8f95-589d3c07b48a")]
public class CVirtualDesktopManager
{
}
public class VirtualDesktopManager
{
public VirtualDesktopManager()
{
cmanager = new CVirtualDesktopManager();
manager = (IVirtualDesktopManager)cmanager;
}
~VirtualDesktopManager()
{
manager = null;
cmanager = null;
}
private CVirtualDesktopManager cmanager = null;
private IVirtualDesktopManager manager;
public bool IsWindowOnCurrentVirtualDesktop(IntPtr TopLevelWindow)
{
int result;
int hr;
if ((hr = manager.IsWindowOnCurrentVirtualDesktop(TopLevelWindow, out result)) != 0)
{
Marshal.ThrowExceptionForHR(hr);
}
return result != 0;
}
public Guid GetWindowDesktopId(IntPtr TopLevelWindow)
{
Guid result;
int hr;
if ((hr = manager.GetWindowDesktopId(TopLevelWindow, out result)) != 0)
{
Marshal.ThrowExceptionForHR(hr);
}
return result;
}
public void MoveWindowToDesktop(IntPtr TopLevelWindow, Guid CurrentDesktop)
{
int hr;
if ((hr = manager.MoveWindowToDesktop(TopLevelWindow, CurrentDesktop)) != 0)
{
Marshal.ThrowExceptionForHR(hr);
}
}
}
调用
GetWindowDesktopId
获取桌面GUID,然后使用GUID和窗口句柄调用MoveWindowToDesktop
将其移动到虚拟桌面。我想知道为什么会有这么多否决票,这很有用。我希望在powershell中也能这样做。对我来说肯定是+1。我也在找同样的东西。我猜否决票应该带有强制性的评论……是的,也许他们认为我不够清楚?奇数.404链接固定在此处: