最近新加入,把自己一些有意思的小东西分享给大家,我是一个学生,代码写得少,哪里不规范,希望大家见谅。
这事我封装好的一个类,可以直接实例化对象之后,调用"对象.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 }