最近新加入,把自己一些有意思的小東西分享給大家,我是一個學生,代碼寫得少,哪里不規范,希望大家見諒。
這事我封裝好的一個類,可以直接實例化對象之后,調用"對象.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 }