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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM