gpt4 book ai didi

c# - Windows 10 中虚拟桌面的编程控制

转载 作者:行者123 更新时间:2023-12-02 22:00:35 29 4
gpt4 key购买 nike

我喜欢 Windows 10 现在支持内置虚拟桌面,但我想添加/修改一些功能(例如,强制在所有桌面上显示一个窗口、使用热键启动任务 View ,有每个显示器的桌面等)

我搜索了应用程序和开发人员引用来帮助我自定义桌面,但没有成功。

我应该从哪里开始?我正在寻找 Windows API 函数(理想情况下,可以从 C# 应用程序调用),这些函数将使我能够以编程方式访问操作虚拟桌面及其中的窗口。

最佳答案

Windows SDK Support Team Blog发布了C# demo to switch Desktops通过IVirtualDesktopManager:

[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);
}
}
}

它包含用于检测窗口显示在哪个桌面上的 API,并且可以在桌面上切换和移动 Windows。

关于c# - Windows 10 中虚拟桌面的编程控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31801402/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com