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


     网上有不少用其他语言实现虚拟桌面的例子,但是用C#实现的倒是比较少,所以就封装了一个VirtualDesktop类,可以很方便的实现虚拟桌面。

        实现虚拟桌面,主要是利用CreateDesktopOpenDesktop 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 程序员之窗

    你可以免费使用或修改提供的源代码,但请保留源代码中的版权信息,详情请查看:

    CS程序员之窗开源协议

    /Files/luomingui/实现虚拟桌面和桌面切换.rar 

    作者:罗敏贵
    邮箱:minguiluo@163.com
    QQ群:34178394 建群 主要是寻找志同道合的人士一起学习和讨论自己的所学所思
    出处:http://luomingui.cnblogs.com/
    说明:专注于微软平台项目架构、熟悉设计模式、架构设计、敏捷个人和项目管理。现主要从事WinForm、ASP.NET、等方面的项目开发、架构、管理工作。文章为作者平时里的思考和练习,可能有不当之处,请博客园的园友们多提宝贵意见。
    知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

  • 相关阅读:
    强制位与冒险位
    完美图解教程 Linux环境VNC服务安装、配置与使用
    Linux 最常用命令
    return 与 exit()的区别return退出本函数,exit()退出整个程序
    Linux标准目录配置(转自鸟哥)
    Hadoop C访问
    Shell学习总结
    为 Linux 应用程序编写 DLL(在仅仅只会编写插件的时候为什么要编写整个应用程序?)
    SteveY对Amazon和Google平台的长篇大论
    gcc环境变量基础
  • 原文地址:https://www.cnblogs.com/luomingui/p/2091496.html
Copyright © 2020-2023  润新知