• C#调用vbs脚本实现Windows版Siri


      最近新加入,把自己一些有意思的小东西分享给大家,我是一个学生,代码写得少,哪里不规范,希望大家见谅。

      这事我封装好的一个类,可以直接实例化对象之后,调用"对象.Talk()"方法,让机器读出你传递进去的字符串。

      这个程序原理很简单,就是创建文件读写流,在D:\Alarm下创建一个sys.vbs文件,里面写入CreateObject("SAPI.SpVoice").Speak "你的字符串",然后执行这个vbs,就可以让你的电脑发声啦,听说Windows下的大多数是女声,反正我的电脑上是女声。

      程序很简单,至于文件夹创建,因为是我写的一个外部程序,没有把文件夹的判断创建放进去,如果要自己生成的话记得 加上文件夹存在与否的判断。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.IO;
     6 using System.Windows.Forms;
     7 
     8 namespace 电脑对话
     9 {
    10     class ComTalk
    11     {
    12         private void runthis()
    13         {
    14             System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
    15 
    16             //设置外部程序名  
    17             Info.FileName = "sys.vbs";
    18 
    19             //设置外部程序工作目录为   D:\Alarm
    20             Info.WorkingDirectory = @"D:\Alarm";
    21 
    22             //最小化方式启动
    23             Info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
    24 
    25             //声明一个程序类  
    26             System.Diagnostics.Process Proc;
    27 
    28             try
    29             {
    30                 Proc = System.Diagnostics.Process.Start(Info);
    31                 System.Threading.Thread.Sleep(500);
    32             }
    33             catch (System.ComponentModel.Win32Exception)
    34             {
    35 
    36                 return;
    37             }
    38         }
    39         public void Talk(string s)
    40         {
    41             string content = string.Empty;
    42             FileStream fs = new FileStream("D:\\Alarm\\sys.vbs", FileMode.OpenOrCreate, FileAccess.Write);
    43             fs.SetLength(0);
    44             if (s == string.Empty)
    45             {
    46                 MessageBox.Show("输入的内容不能为空");
    47             }
    48             else
    49             {
    50                 StreamWriter sw = new StreamWriter(fs, Encoding.Default);
    51                 content = s.Trim();
    52                 content = @"CreateObject(""SAPI.SpVoice"").Speak """.Trim() + content + @"""".Trim();
    53                 sw.Write(content);
    54                 sw.Close();
    55             }
    56             runthis();
    57         }
    58     }
    59 }
    作者:letcafe

    -------------------------------------------

    个性签名:编程水太深,先会造轮子!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    idea中运行hadoop的案例使用打jar包的方式操作(HDFS java API)
    eclipse集成使用Hadoop插件运行WordCount程序
    Linux中hadoop运行第一个自带的Wordount程序
    windows配置hadoop环境变量
    Linxu安装mysql
    Linux开机自启动网路连接
    studio开发之简单的登陆
    使用JDK自带的JConsole性能调优
    观察者模式
    mysql中的(B+数据)
  • 原文地址:https://www.cnblogs.com/letcafe/p/5441321.html
Copyright © 2020-2023  润新知