当你看到这个命名空间的时候,别因为是VB的东西就匆忙关掉网页,那将会是您的损失,此命名空间中的资源最初目的是为了简化VB.NET开发而创建的,所以Microsoft.VisualBasic并不属于System命名空间,而是独立存在的。虽然是为了VB而建的,但并不妨碍我们在C#中使用它。

Microsoft.VisualBasic命名空间的资源,可以帮助我们方便、快捷的实用一些常用的计算机软/硬件及网络资源,提高开发中的效率。

对于本地计算机资源的使用,我们可能会着重关注Microsoft.VisualBasic.Devices命名空间,在这里包含了与本机设备和操作系统相关的资源。

使用这些资源,我们必须在项目中添加它们的引用。可以通过菜单“项目”->“添加引用”,在“.NET”页选中“Microsoft.VisualBasic”,然后“确定”完成。然后,别忘了在代码文件中使用它们。

在这里我们主要关注一下Microsoft.VisualBasic.Devices命名空间中的资源,主要包括:

  • Audio类
  • Clock类
  • Computer类
  • ComputerInfo类
  • Keyboard类
  • Mouse类
  • Network类
  • Ports类
  • ServerComputer类

关于这些资源的详细说明,大家可以参考MSDN Library。下面,我们将通过几种典型的应用了解下如何在C#代码中使用这些资源。

获取操作系统与内存信息

为了实现本功能,我们使用了ComputerInfo类,下面代码显示当前计算机的系统名称和版本,以及内存相关的信息。

using Microsoft.VisualBasic;
using Microsoft.VisualBasic.Devices;
namespace Microsoft.VisualBasic_Demo
{
    class Program
    {
        //将字节转换为兆字节
        static ulong ByteToMb(ulong byteValue)
        {
            return byteValue / 1048576;
        }
        static void Main(string[] args)
        {
            ComputerInfo myPcInfo = new ComputerInfo();

Console.WriteLine("操作系统:{0}", myPcInfo.OSFullName);
            Console.WriteLine("版本:{0}", myPcInfo.OSVersion);

Console.WriteLine("全部物理内存:{0}",
                ByteToMb(myPcInfo.TotalPhysicalMemory));
            Console.WriteLine("全部虚拟内存:{0}",
                ByteToMb(myPcInfo.TotalVirtualMemory));
            Console.WriteLine("可用物理内存:{0}",
                ByteToMb(myPcInfo.AvailablePhysicalMemory));
            Console.WriteLine("可用虚拟内存:{0}",
                ByteToMb(myPcInfo.AvailableVirtualMemory));

Console.Read();
        }
    }
}

运行结果如下:

如果你的软件对操作系统版本或内存有特殊的要求,使用这些信息可以方便地进行相关信息的判断。如果你需要得到更多关于Windows的相关信息,如计算机名称(ComputerName)、当前登录名

(UserName)等,可以使用位于System.Windows.Forms命名空间中的SystemInformation类来获取。

播放波形文件

位于Microsoft.VisualBasic.Devices命名空间下的Audio类可以帮助我们快速地播放波形音频文件。波形文件是一种无损的音频文件,在很多场合都可使用,其中,在Windows系统中的系统声音就是使用波形文件。

在Audio类中,我们主要使用Play()方法播放波形文件。代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.Devices;
namespace Microsoft.VisualBasic_Demo
{
class Program
{
static void Main(string[] args)
{
//播放声音
Audio myAudio = new Audio();
myAudio.Play(@"c:\test.wav", AudioPlayMode.Background);
Console.Read();
}
}
}

代码很简单,目的就是播放位于“C:\”中的”test.wav”波形文件。文件不存在或者格式不支持时,会产生异常,所以,在正式代码中,你应该使用try-catch语句结构。

Play()方法的两个参数,第一个是需要播放文件的路径。第二个参数指定了播放模式(Mode),由AudioPlayMode枚举类型指定,主要有如下选项:

  • Background,在后台中播放声音。这是默认值,上述代码可以直接写成”
    myAudio.Play(@"c:\test.wav");“。
  • BackgroundLoop,在后台中循环播放,直到调用Stop()方法为止。
  • WaitToComplete,播放声音,直到声音播放完成才继续执行其他代码。

网络基本应用

有时,需要在软件中判断网络是否畅通,或者上传或下载文件,这时,可以使用Microsoft.VisualBasic.Devices命名空间的Network类。

Network类只要包括如下常用资源:

  • IsAvaiable属性,判断计算机是否已联网,如果网络畅通,则此属性返回true,否则,

    返回false。
  • Ping()方法,用于测试与另一台计算机的连接是否畅通。参数可以是URL、计算机名或IP地址。
  • DownloadFile()方法,从指定的网络位置下载文件。一般情况下,第一个参数指定需要下载文件的网络位置,第二个参数指定本地存放位置。
  • UploadFile()方法,向指定的网络位置上传文件。一般情况下,第一个参数指定需要上传文件的本地位置,第二个参数指定上传到的网络位置。

一个实用的却被忽略的命名空间:Microsoft.VisualBasic的更多相关文章

  1. "一个实用的却被忽略的命名空间:Microsoft.VisualBasic":

        当你看到这个命名空间的时候,别因为是vb的东西就匆忙关掉网页,那将会是您的损失,此命名空间中的资源最初目的是为了简化vb.net开发而创建的,所以microsoft.visualbasic并不 ...

  2. “makefile”写法详解,一步一步写一个实用的makefile,详解 sed 's,$∗\.o[ :]*,\1.o $@ : ,g' < $@.

    目的:编写一个实用的makefile,能自动编译当前目录下所有.c/.cpp源文件,支持二者混合编译.并且当某个.c/.cpp..h或依赖的源文件被修改后,仅重编涉及到的源文件,未涉及的不编译. 二要 ...

  3. vs2013 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”。是否缺少程序集引用?

    参考博文: 解决办法:添加引用/com/Microsoft Office 11.0 Object Library 然后在程序中 C#代码 using Microsoft.Office.Interop. ...

  4. 错误 CS0234 命名空间“Microsoft”中不存在类型或命名空间名“Reporting”(是否缺少程序集引用?)

    VS2017 使用Microsoft Rdlc报表设计器出现以下错误: 错误 CS0234 命名空间“Microsoft”中不存在类型或命名空间名“Reporting”(是否缺少程序集引用?) 以及其 ...

  5. Xamarin基础命名空间Microsoft.SqlServer.Server

    Xamarin基础命名空间Microsoft.SqlServer.Server   该命名空间包含大量的类.接口和枚举,用于操作微软SQL Server数据库.该空间支持Xamarin.iOS和Xam ...

  6. 命名空间“Microsoft.AspNet”中不存在类型或命名空间名“Mvc”

    问题: 错误 CS0234 命名空间"Microsoft.AspNet"中不存在类型或命名空间名"Mvc"(是否缺少程序集引用?) 解决方案: 打开文件夹 Us ...

  7. 命名空间“Microsoft.Office.Interop”中不存在类型或命名空间名称“Excel”。是否缺少程序集引用 的另一种解决方案

    一直以来都是使用tfs进行源代码管理,系统部署也是由我本机生成后发布到服务器上,某一日,进行发布操作时,报了 [命名空间“Microsoft.Office.Interop”中不存在类型或命名空间名称“ ...

  8. 类型或命名空间名称“Interop”在类或命名空间“Microsoft.Office”中不存在(是否缺少程序集引用?)

    准备用C#编写Web程序,生成Excel报表,在使用下面语句时报错. using Microsoft.Office.Interop.Excel; 报错信息:类型或命名空间名称“Interop”在类或命 ...

  9. 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”(是否缺少程序集引用?

    在一个web项目中需要导出word打印,引用Microsoft.Office.Interop.Word后,在pages里使用正常,在app_code里新建类引用就报错. Report.cs里using ...

随机推荐

  1. 【转】4G18的低成本NA玩法

    首先是要再次强调一次,4G18的缸径是76MM,冲程是87.5MM.属于典型的长冲程低转发动机! 这种设计的优点是比较适合市区走停的工作状况,省油. 如果要针对改装方案而言因为这种低转时便可输出大扭矩 ...

  2. Spring 开发第一步

    经过今天上午的学习发现spring上手开发一个"hello world"真的非常简单. 开发环境搭建: 1.去spring官网下载spring-framework-3.2.11.R ...

  3. S11 day 96 RestFramework 之认证权限

    一.设计一个简易的登录 1. 建立一个模型 class UserInfo(models.Model): username =models.CharField(max_length=) password ...

  4. net.sf.json.JSONOBJECT.fromObject 与 com.alibaba.fastjson.JSONObject.parseObject

    文章待补充,先写写以下知识点好了. NULL值处理之 net.sf.json.JSONObject 和 com.alibaba.fastjson.JSONObject区别 JSON作为一个轻量级的文本 ...

  5. react-router-dom 手动控制路由跳转

    基于 react-router 4.0 版本,我们想要通过 JS 手动控制路由跳转,分三步: 第一步:引入 propTypes const PropTypes = require('prop-type ...

  6. redis cluster 添加 删除 重分配 节点

    redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢.  一,redis cluster命令 //集群(cluster) CLUSTER INFO 打印集群的信 ...

  7. js有关数组的函数

    map()和filter()函数 js的数组迭代器函数map和filter,可以遍历数组时产生新的数组,和python的map函数很类似1)filter是满足条件的留下,是对原数组的过滤(筛选):2) ...

  8. 用absolute进行页面的自适应布局

    用position:absolute和top,left,bottom,right进行设置可以进行页面的头部,底部,左边框,内容的自适应布局,可以代替position:fixed; <!DOCTY ...

  9. postgresql 脏读-dirtied

    共享缓冲区 在内存中读取或写入数据总是比在任何其他介质上更快.数据库服务器还需要用于快速访问数据的内存,无论是READ还是WRITE访问.在PostgreSQL中,这被称为"共享缓冲区&qu ...

  10. C# 中out,ref,params参数的使用

    C#中有三个高级参数,分别是out,ref,params:   1.out参数 方法使用return 只能返回一个值(一个数值或一个指针值),out参数可以帮助我们在一个方法中返回多个值,不限类型. ...