这是一个可以开机后自动和你打招呼的小程序,至于你的名字在配置文件中。这里主要是应用了微软的speech技术来播放声音。所以如果你有其他的需求可以自己扩展。这里我只是写了很少的一部分功能,以后有新的想法后会不断的添加的。

---------------------------------------------------------------------------------------------
第一、需要安装speech的sdk和languagepack,这可以从网上找到,我很想上传到我的资源中,但是太大了。
第二、我使用的vs2005,这里需要添加2个com引用,一个是microsoft speech object library;一个是windows script host object model。第一个会包含我们要使用的发音的类,第二个是用来建立快捷方式。
第三、开始写代码,我把主要代码复制出来:
这是唯一的一个窗体的代码,从这里开始执行,窗体上我暂时没有放置任何控件
  1. public partial class Form1 : Form
  2. {
  3. SpeechLibr sp = null;
  4. public Form1()
  5. {
  6. InitializeComponent();
  7. }
  8. private void Form1_Load(object sender, EventArgs e)
  9. {
  10. // 创建该程序的快捷方式到启动菜单,这样以后我们开机后它就可以自动运行了
  11. SetThisToStart();
  12. // 实例化speech类
  13. sp = SpeechLibr.instance();
  14. // 说话
  15. sp.AnalyseSpeak(Utils.SayHelloToMe(Utils.ReadConfigFile()));
  16. }
  17. /// <summary>
  18. /// 创建该程序的快捷方式到启动菜单
  19. /// </summary>
  20. private void SetThisToStart()
  21. {
  22. WshShell shell = new WshShell();
  23. string StartupPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Startup);
  24. IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(StartupPath + "//brother.lnk");
  25. shortcut.TargetPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
  26. shortcut.WorkingDirectory = System.Environment.CurrentDirectory;
  27. shortcut.WindowStyle = 1;
  28. shortcut.Description = "brother";
  29. shortcut.IconLocation = System.Environment.SystemDirectory + "" + "shell32.dll, 165";
  30. shortcut.Save();
  31. }
  32. }

下面是真材实料,呵呵,用来发音的类,我也是从网上找到的,但是使用起来很简单

  1. public class SpeechLibr
  2. {
  3. private static SpeechLibr _Instance = null;
  4. private SpVoiceClass voice = null;
  5. private SpeechLibr()
  6. {
  7. BuildSpeach();
  8. }
  9. private void BuildSpeach()
  10. {
  11. if (voice == null)
  12. voice = new SpVoiceClass();
  13. }
  14. public static SpeechLibr instance()
  15. {
  16. if (_Instance == null)
  17. _Instance = new SpeechLibr();
  18. return _Instance;
  19. }
  20. private void SetChinaVoice()
  21. {
  22. // ///3表示是汉用,0124都表示英语,就是口音不同
  23. voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3);
  24. }
  25. private void SetEnglishVoice()
  26. {
  27. voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(1);
  28. }
  29. private void SpeakChina(string strSpeak)
  30. {
  31. SetChinaVoice();
  32. Speak(strSpeak);
  33. }
  34. private void SpeakEnglishi(string strSpeak)
  35. {
  36. SetEnglishVoice();
  37. Speak(strSpeak);
  38. }
  39. public void AnalyseSpeak(string strSpeak)
  40. {
  41. int iCbeg = 0;
  42. int iEbeg = 0;
  43. bool IsChina = true;
  44. for (int i = 0; i < strSpeak.Length; i++)
  45. {
  46. char chr = strSpeak[i];
  47. if (IsChina)
  48. {
  49. if (chr <= 122 && chr >= 65)
  50. {
  51. int iLen = i - iCbeg;
  52. string strValue = strSpeak.Substring(iCbeg, iLen);
  53. SpeakChina(strValue);
  54. iEbeg = i;
  55. IsChina = false;
  56. }
  57. }
  58. else
  59. {
  60. if (chr > 122 || chr < 65)
  61. {
  62. int iLen = i - iEbeg;
  63. string strValue = strSpeak.Substring(iEbeg, iLen);
  64. this.SpeakEnglishi(strValue);
  65. iCbeg = i;
  66. IsChina = true;
  67. }
  68. }
  69. }//end for
  70. if (IsChina)
  71. {
  72. int iLen = strSpeak.Length - iCbeg;
  73. string strValue = strSpeak.Substring(iCbeg, iLen);
  74. SpeakChina(strValue);
  75. }
  76. else
  77. {
  78. int iLen = strSpeak.Length - iEbeg;
  79. string strValue = strSpeak.Substring(iEbeg, iLen);
  80. SpeakEnglishi(strValue);
  81. }
  82. }
  83. private void BuildSpeech()
  84. {
  85. if (voice == null)
  86. voice = new SpVoiceClass();
  87. }
  88. public int Volume
  89. {
  90. get
  91. {
  92. return voice.Volume;
  93. }
  94. set
  95. {
  96. voice.SetVolume((ushort)(value));
  97. }
  98. }
  99. public int Rate
  100. {
  101. get
  102. {
  103. return voice.Rate;
  104. }
  105. set
  106. {
  107. voice.SetRate(value);
  108. }
  109. }
  110. private void Speak(string strSpeack)
  111. {
  112. try
  113. {
  114. voice.Speak(strSpeack, SpeechVoiceSpeakFlags.SVSFlagsAsync);
  115. }
  116. catch (Exception err)
  117. {
  118. throw (new Exception("发生一个错误:" + err.Message));
  119. }
  120. }
  121. public void Stop()
  122. {
  123. voice.Speak(string.Empty, SpeechLib.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
  124. }
  125. public void Pause()
  126. {
  127. voice.Pause();
  128. }
  129. public void Continue()
  130. {
  131. voice.Resume();
  132. }
  133. }
下面是一个工具类,主要提供一些方法来提供想要说的内容和读取配置文件
  1. public class Utils
  2. {
  3. #region ReadConfigFile 读配置文件
  4. /// <summary>
  5. /// 读配置文件
  6. /// </summary>
  7. public static MeInfo ReadConfigFile()
  8. {
  9. MeInfo me = new MeInfo();
  10. XmlDocument xl = new XmlDocument();
  11. xl.Load(@"config.xml");
  12. XmlNodeList xnl = xl.SelectSingleNode("config").ChildNodes;
  13. foreach (XmlNode xd in xnl)
  14. {
  15. XmlElement xe = (XmlElement)xd;
  16. if (xd.Name == "MyName")
  17. {
  18. me.MyName = xe.GetAttribute("value");
  19. }
  20. else if (xd.Name == "BirthDay")
  21. {
  22. me.BirthDay = xe.GetAttribute("value");
  23. }
  24. else if (xd.Name == "Sex")
  25. {
  26. me.Sex = xe.GetAttribute("value");
  27. }
  28. }
  29. return me;
  30. }
  31. #endregion
  32. #region SayHelloToMe 向自己打招呼
  33. /// <summary>
  34. /// 向自己打招呼
  35. /// </summary>
  36. /// <param name="me"></param>
  37. /// <returns></returns>
  38. public static string SayHelloToMe(MeInfo me)
  39. {
  40. StringBuilder sb = new StringBuilder();
  41. sb.Append(GetAmOrPm());
  42. sb.Append("好,");
  43. sb.Append(me.MyName);
  44. return sb.ToString();
  45. }
  46. #endregion
  47. #region GetAmOrPm 获得中文的上午或下午
  48. /// <summary>
  49. /// 获得中文的上午或下午
  50. /// </summary>
  51. /// <returns>午夜,早上,上午,中午,下午,晚上</returns>
  52. public static string GetAmOrPm()
  53. {
  54. if ((DateTime.Now.Hour >= 0) && (DateTime.Now.Hour <5))
  55. {
  56. return "午夜";
  57. }
  58. else if ((DateTime.Now.Hour >= 5) && (DateTime.Now.Hour < 6))
  59. {
  60. return "早上";
  61. }
  62. else if ((DateTime.Now.Hour >= 6) && (DateTime.Now.Hour < 12))
  63. {
  64. return "上午";
  65. }
  66. else if ((DateTime.Now.Hour >= 12) && (DateTime.Now.Hour < 13))
  67. {
  68. return "中午";
  69. }
  70. else if ((DateTime.Now.Hour >= 12) && (DateTime.Now.Hour < 18))
  71. {
  72. return "下午";
  73. }
  74. else if ((DateTime.Now.Hour >= 18) && (DateTime.Now.Hour <= 23))
  75. {
  76. return "晚上";
  77. }
  78. return "";
  79. }
  80. #endregion
  81. }

下面是配置文件,很简单

  1. <?xml version="1.0" encoding="GB2312"?>
  2. <config>
  3. <MyName value="常宇明" />
  4. <BirthDay value="1980/02/15" />
  5. <Sex value="男" />
  6. </config>

一个可以开机后自动和你打招呼的小程序(希望以后可以成为智能的系统)相关推荐

  1. Win10休眠模式设置:开机后自动恢复工作界面,防止程序员虐待电脑

    Win10休眠模式设置:开机后自动恢复工作界面,防止程序员虐待电脑 这个功能叫做休眠,与睡眠不同,休眠会在电脑关机之后,将当前工作环境保存为文件,然后在开机之后自动恢复.这个功能对不爱关机的程序员非常 ...

  2. 一码多用:扫描一个二维码自动跳转支付宝/微信小程序、安卓/iosAPP

    随着支付宝,微信小程序的慢慢崛起,现在很多公司同一款程序都开发了四个版本.支付宝/微信小程序.安卓/iosAPP.但是随着程序的增加,引导用户使用就成了问题.比如,一家店门口如何贴一张二维码.实现用户 ...

  3. 电脑桌面计算机总是自动打开,电脑开机后自动打开很多软件怎么办

    1. 电脑一开机自动启动好多小程序,如何取消掉 电脑一开机自动启动好多小程序,取消方法如下: 1打开开始菜单,在搜索框输入msconfig ,按回车键, 2在启动栏把不需要启动的程序打勾去掉,点击确定 ...

  4. 重启计算机到安全模式,电脑开机后,自动重新启动,进入安全模式正常,在安全模式下用卡巴没? 爱问知识人...

    一开机就自动进入安全模式 1 关闭所有程序. 2 在 Windows 任务栏上,单击"开始">"运行". 3 在"打开"方框中,键入以 ...

  5. 解决荣耀8 手机数据连接卡设置开机后自动还原问题。

    症状 卡2为主卡,卡1为上网数据连接专用卡,设置完毕之后重启发现数据连接被更改为卡2了. 有多严重? 造成我得卡2多次欠费,卡2 是3g卡,不能上网,但是是用来接电话的永久卡,如果把主卡设置为卡1,那 ...

  6. Linux开机后自动执行命令或脚本

    文章目录 说明 应用场景 涉及文件 步骤 1.添加开机执行指令 2.编写脚本 3.测试效果 自动化编辑工具 脚本 效果 已存在的脚本 不存在的脚本 说明 应用场景 应用场景:开机后自动执行命令或脚本 ...

  7. 设置程序在Windows开机后自动运行的3种方式

    设置程序开机自动运行的方式主要有三种: 一.把快捷方式复制到[开始->所有程序->启动]中.这个得依赖用户的操作. 二.程序添加到Windows开机选项中启动运行. 传送门 设置程序在Wi ...

  8. 微信小程序:热门表情包+头像+壁纸自动采集多分类微信小程序

    这是一款自动采集的一款微信小程序源码 内由表情包,头像,还有壁纸组合而成的一款图片小程序 每一个都自带多种分类,内容丰富运营适合 另外支持插屏广告,激励视频广告,等多种广告 小程序源码下载地址: 微信 ...

  9. 热门表情包+头像+壁纸自动采集多分类微信小程序源码下载支持多种流量主模式

    ​这是一款自动采集的一款微信小程序源码 内由表情包,头像,还有壁纸组合而成的一款图片小程序 每一个都自带多种分类,内容丰富运营适合 另外支持插屏广告,激励视频广告,等多种广告 废话不多说,下面看小编的 ...

最新文章

  1. 查找计算机视觉、模式识别、图像处理领域的国际会议和会议排名
  2. 【转】ABP源码分析二十五:EventBus
  3. 服务器怎么存储文件节省空间,超大空间云服务器文件存储
  4. Java集合系列---ConcurrentHashMap源码解析
  5. golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法
  6. php用jquery-ajax上传多张图片限制图片大小
  7. zabbix 监控项自动发现过滤_Zabbix使用javascript+jsonpath预处理动态生成监控项
  8. vs2008 SP1 安装问题小解决方案
  9. MATLAB加入螺旋相位板调制,螺旋相位板的操作原理和使用手册_维尔克斯光电
  10. 普通有刷直流电机 H桥驱动
  11. html字体字号颜色怎么设置,HTML 字体颜色怎么设置?
  12. 钉钉企业微信与飞书模式区别
  13. 深入理解操作系统——datalab-handout
  14. 微信投票平台防止刷票的方法和原理随笔
  15. 坚果投影仪怎么才能访问电脑共享文件,详细的操作方法分享
  16. 莱鸟学spss数据分析之第六章---描述性分析
  17. eclipse次行风格的设置
  18. 用AI取代SGD?无需训练ResNet-50,AI秒级预测全部2400万个参数,准确率60% | NeurIPS 2021...
  19. JZOJ 7066. 【2021.4.24 NOI模拟】ehzeux与圆周(DP)
  20. 动态规划及动态规划的应用

热门文章

  1. PPT上五个控制台界面
  2. 王牌nba服务器维修,王牌NBA常见问题_王牌NBA问答_疑难解答_九游手机游戏
  3. vue 流的方式下载文件
  4. QQ公众号如何获取接口调用凭据
  5. notepad++ 鼠标箭头显示为 横线“_“
  6. 豪华CEO培训中国试水
  7. javaSE学习笔记01 入门篇
  8. Thinkphp5关联模型多对多的定义与使用
  9. 产品经理常见专业术语
  10. 植物2 IOS 怎么实名认证_身份证被别人抖音实名认证怎么找回?