C# 实现虚拟桌面和桌面切换

网上有不少用其他语言实现虚拟桌面的例子,但是用C#实现的倒是比较少,所以就封装了一个VirtualDesktop类,可以很方便的实现虚拟桌面。
实现虚拟桌面,主要是利用CreateDesktop、OpenDesktop和 SwitchDesktop这几个API函数,如果想在打开的桌面上运行程序的话还需要的就是CreateProcess函数,这些API函数的具体介绍可以到MSDN上查看,在程序中,这些API的封装都放在NativeMethods类中。
VirtualDesktop类都已经把重要的方法实现了,包括创建新和打开新桌面、切换到新桌面、关闭新桌面和在新桌面中运行程序,而且还提供了几个常用的桌面对象:默认桌面(Default)、当前线程所在桌面(Current)和跟用户进行交互的桌面(Input)。来看看VirtualDesktop的类视图:
的是SetThreadDesktop函数,它的作用是设置当前线程的工作桌面为新的虚拟桌面,这个API函数MSDN是这么解释的:
The SetThreadDesktop function will fail if the calling thread has any windows or hooks on its current desktop (unless the hDesktop parameter is a handle to the current desktop).
就是说需要切换Desktop的线程中不能有任何UI方面的东西,所以如果当前线程包含有UI的话,需要在新的线程中调用它,像下面这个例子:
System.Threading.Thread th = new System.Threading.Thread(
new System.Threading.ThreadStart(delegate()
{
_vDesktop.SetThreadDesktop();
}));
程序中提供了一个简单的例子,当你启动程序后,按 Ctrl + 1,进入新的虚拟桌面,按 Ctrl + 2,进入默认的桌面。大家在使用的时候,一定要记得加上让自己可以返回原来桌面的方法,要不就只能重启电脑或者注销了,因为新桌面是不会包含原来桌面的程序的,进去就是空空的,什么都没有。
声明:
本文版权归作者和CS 程序员之窗所有,欢迎转载,转载必须保留以下版权信息,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
作者:Starts_2000
出处:CS 程序员之窗。
你可以免费使用或修改提供的源代码,但请保留源代码中的版权信息,详情请查看:
/Files/luomingui/实现虚拟桌面和桌面切换.rar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?