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

  当你看到这个命名空间的时候,别因为是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()方法,向指定的网络位置上传文件。一般情况下,第一个参数指定需要上传文件的本地位置,第二个参数指定上传到的网络位置。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

webpack 项目 css/js主域重试

为了提高网站的访问速度,现在一般会将静态资源放在 CDN 下,而不是放在网站的域名之下。以腾讯课堂为例,其域名为 ke.qq.com,打开控制台,访问 ke....

20710
来自专栏Youngxj

代码实现给网站添加外链跳转emlog

2624
来自专栏企鹅号快讯

174.Spring Boot WebSocket:群聊-昵称

【视频&交流平台】 àSpring Boot视频 http://study.163.com/course/introduction.htm?courseId=1...

2775
来自专栏木头编程 - moTzxx

PHP 学习筆記[1] —— ThinkPHP 公共函数整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

794
来自专栏我就是马云飞

设计模式二十四章经之命令模式

742
来自专栏恰同学骚年

自己动手写工具:百度图片批量下载器

开篇:在某些场景下,我们想要对百度图片搜出来的东东进行保存,但是一个一个得下载保存不仅耗时而且费劲,有木有一种方法能够简化我们的工作量呢,让我们在离线模式下也能...

1181
来自专栏Android 研究

Android系统启动——7附录1:Android属性系统

属性系统在Android 系统中大量使用,用来保存系统级别的设置或者在进程间传递一些简单的信息。每个属性由属性名称和属性值组成,名称通常是一串‘.’分割的字符串...

621
来自专栏AndroidTv

讲讲断点续传那点儿事提问理论基础代码示例

这次想来讲讲断点续传,以前没相关需求,所以一直没去接触,近阶段了解了之后,其实并不复杂,那么也便来写一篇记录一下,分享给大伙,也方便自己后续查阅。

642
来自专栏Bug生活2048

.net core下验证码及二维码登录的实现

验证码实现的逻辑比较简单,生成一个随机数的图片,然后将随机数保存至cookie中,用于客户端校验。

863
来自专栏Android先生

手把手教你在Android Studio 3.0上分析内存泄漏

戳我下载 Android Studio 3.0:https://developer.android.google.cn/studio/index.html

882

扫码关注云+社区