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

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

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

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

上一篇:Xshell配色为ubuntu风格


下一篇:MySQL源码学习:ib_logfile、bin-log与主从同步