一个可以开机后自动和你打招呼的小程序(希望以后可以成为智能的系统)
这是一个可以开机后自动和你打招呼的小程序,至于你的名字在配置文件中。这里主要是应用了微软的speech技术来播放声音。所以如果你有其他的需求可以自己扩展。这里我只是写了很少的一部分功能,以后有新的想法后会不断的添加的。
- public partial class Form1 : Form
- {
- SpeechLibr sp = null;
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- // 创建该程序的快捷方式到启动菜单,这样以后我们开机后它就可以自动运行了
- SetThisToStart();
- // 实例化speech类
- sp = SpeechLibr.instance();
- // 说话
- sp.AnalyseSpeak(Utils.SayHelloToMe(Utils.ReadConfigFile()));
- }
- /// <summary>
- /// 创建该程序的快捷方式到启动菜单
- /// </summary>
- private void SetThisToStart()
- {
- WshShell shell = new WshShell();
- string StartupPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Startup);
- IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(StartupPath + "//brother.lnk");
- shortcut.TargetPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
- shortcut.WorkingDirectory = System.Environment.CurrentDirectory;
- shortcut.WindowStyle = 1;
- shortcut.Description = "brother";
- shortcut.IconLocation = System.Environment.SystemDirectory + "" + "shell32.dll, 165";
- shortcut.Save();
- }
- }
下面是真材实料,呵呵,用来发音的类,我也是从网上找到的,但是使用起来很简单
- public class SpeechLibr
- {
- private static SpeechLibr _Instance = null;
- private SpVoiceClass voice = null;
- private SpeechLibr()
- {
- BuildSpeach();
- }
- private void BuildSpeach()
- {
- if (voice == null)
- voice = new SpVoiceClass();
- }
- public static SpeechLibr instance()
- {
- if (_Instance == null)
- _Instance = new SpeechLibr();
- return _Instance;
- }
- private void SetChinaVoice()
- {
- // ///3表示是汉用,0124都表示英语,就是口音不同
- voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3);
- }
- private void SetEnglishVoice()
- {
- voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(1);
- }
- private void SpeakChina(string strSpeak)
- {
- SetChinaVoice();
- Speak(strSpeak);
- }
- private void SpeakEnglishi(string strSpeak)
- {
- SetEnglishVoice();
- Speak(strSpeak);
- }
- public void AnalyseSpeak(string strSpeak)
- {
- int iCbeg = 0;
- int iEbeg = 0;
- bool IsChina = true;
- for (int i = 0; i < strSpeak.Length; i++)
- {
- char chr = strSpeak[i];
- if (IsChina)
- {
- if (chr <= 122 && chr >= 65)
- {
- int iLen = i - iCbeg;
- string strValue = strSpeak.Substring(iCbeg, iLen);
- SpeakChina(strValue);
- iEbeg = i;
- IsChina = false;
- }
- }
- else
- {
- if (chr > 122 || chr < 65)
- {
- int iLen = i - iEbeg;
- string strValue = strSpeak.Substring(iEbeg, iLen);
- this.SpeakEnglishi(strValue);
- iCbeg = i;
- IsChina = true;
- }
- }
- }//end for
- if (IsChina)
- {
- int iLen = strSpeak.Length - iCbeg;
- string strValue = strSpeak.Substring(iCbeg, iLen);
- SpeakChina(strValue);
- }
- else
- {
- int iLen = strSpeak.Length - iEbeg;
- string strValue = strSpeak.Substring(iEbeg, iLen);
- SpeakEnglishi(strValue);
- }
- }
- private void BuildSpeech()
- {
- if (voice == null)
- voice = new SpVoiceClass();
- }
- public int Volume
- {
- get
- {
- return voice.Volume;
- }
- set
- {
- voice.SetVolume((ushort)(value));
- }
- }
- public int Rate
- {
- get
- {
- return voice.Rate;
- }
- set
- {
- voice.SetRate(value);
- }
- }
- private void Speak(string strSpeack)
- {
- try
- {
- voice.Speak(strSpeack, SpeechVoiceSpeakFlags.SVSFlagsAsync);
- }
- catch (Exception err)
- {
- throw (new Exception("发生一个错误:" + err.Message));
- }
- }
- public void Stop()
- {
- voice.Speak(string.Empty, SpeechLib.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
- }
- public void Pause()
- {
- voice.Pause();
- }
- public void Continue()
- {
- voice.Resume();
- }
- }
- public class Utils
- {
- #region ReadConfigFile 读配置文件
- /// <summary>
- /// 读配置文件
- /// </summary>
- public static MeInfo ReadConfigFile()
- {
- MeInfo me = new MeInfo();
- XmlDocument xl = new XmlDocument();
- xl.Load(@"config.xml");
- XmlNodeList xnl = xl.SelectSingleNode("config").ChildNodes;
- foreach (XmlNode xd in xnl)
- {
- XmlElement xe = (XmlElement)xd;
- if (xd.Name == "MyName")
- {
- me.MyName = xe.GetAttribute("value");
- }
- else if (xd.Name == "BirthDay")
- {
- me.BirthDay = xe.GetAttribute("value");
- }
- else if (xd.Name == "Sex")
- {
- me.Sex = xe.GetAttribute("value");
- }
- }
- return me;
- }
- #endregion
- #region SayHelloToMe 向自己打招呼
- /// <summary>
- /// 向自己打招呼
- /// </summary>
- /// <param name="me"></param>
- /// <returns></returns>
- public static string SayHelloToMe(MeInfo me)
- {
- StringBuilder sb = new StringBuilder();
- sb.Append(GetAmOrPm());
- sb.Append("好,");
- sb.Append(me.MyName);
- return sb.ToString();
- }
- #endregion
- #region GetAmOrPm 获得中文的上午或下午
- /// <summary>
- /// 获得中文的上午或下午
- /// </summary>
- /// <returns>午夜,早上,上午,中午,下午,晚上</returns>
- public static string GetAmOrPm()
- {
- if ((DateTime.Now.Hour >= 0) && (DateTime.Now.Hour <5))
- {
- return "午夜";
- }
- else if ((DateTime.Now.Hour >= 5) && (DateTime.Now.Hour < 6))
- {
- return "早上";
- }
- else if ((DateTime.Now.Hour >= 6) && (DateTime.Now.Hour < 12))
- {
- return "上午";
- }
- else if ((DateTime.Now.Hour >= 12) && (DateTime.Now.Hour < 13))
- {
- return "中午";
- }
- else if ((DateTime.Now.Hour >= 12) && (DateTime.Now.Hour < 18))
- {
- return "下午";
- }
- else if ((DateTime.Now.Hour >= 18) && (DateTime.Now.Hour <= 23))
- {
- return "晚上";
- }
- return "";
- }
- #endregion
- }
下面是配置文件,很简单
- <?xml version="1.0" encoding="GB2312"?>
- <config>
- <MyName value="常宇明" />
- <BirthDay value="1980/02/15" />
- <Sex value="男" />
- </config>
一个可以开机后自动和你打招呼的小程序(希望以后可以成为智能的系统)相关推荐
- Win10休眠模式设置:开机后自动恢复工作界面,防止程序员虐待电脑
Win10休眠模式设置:开机后自动恢复工作界面,防止程序员虐待电脑 这个功能叫做休眠,与睡眠不同,休眠会在电脑关机之后,将当前工作环境保存为文件,然后在开机之后自动恢复.这个功能对不爱关机的程序员非常 ...
- 一码多用:扫描一个二维码自动跳转支付宝/微信小程序、安卓/iosAPP
随着支付宝,微信小程序的慢慢崛起,现在很多公司同一款程序都开发了四个版本.支付宝/微信小程序.安卓/iosAPP.但是随着程序的增加,引导用户使用就成了问题.比如,一家店门口如何贴一张二维码.实现用户 ...
- 电脑桌面计算机总是自动打开,电脑开机后自动打开很多软件怎么办
1. 电脑一开机自动启动好多小程序,如何取消掉 电脑一开机自动启动好多小程序,取消方法如下: 1打开开始菜单,在搜索框输入msconfig ,按回车键, 2在启动栏把不需要启动的程序打勾去掉,点击确定 ...
- 重启计算机到安全模式,电脑开机后,自动重新启动,进入安全模式正常,在安全模式下用卡巴没? 爱问知识人...
一开机就自动进入安全模式 1 关闭所有程序. 2 在 Windows 任务栏上,单击"开始">"运行". 3 在"打开"方框中,键入以 ...
- 解决荣耀8 手机数据连接卡设置开机后自动还原问题。
症状 卡2为主卡,卡1为上网数据连接专用卡,设置完毕之后重启发现数据连接被更改为卡2了. 有多严重? 造成我得卡2多次欠费,卡2 是3g卡,不能上网,但是是用来接电话的永久卡,如果把主卡设置为卡1,那 ...
- Linux开机后自动执行命令或脚本
文章目录 说明 应用场景 涉及文件 步骤 1.添加开机执行指令 2.编写脚本 3.测试效果 自动化编辑工具 脚本 效果 已存在的脚本 不存在的脚本 说明 应用场景 应用场景:开机后自动执行命令或脚本 ...
- 设置程序在Windows开机后自动运行的3种方式
设置程序开机自动运行的方式主要有三种: 一.把快捷方式复制到[开始->所有程序->启动]中.这个得依赖用户的操作. 二.程序添加到Windows开机选项中启动运行. 传送门 设置程序在Wi ...
- 微信小程序:热门表情包+头像+壁纸自动采集多分类微信小程序
这是一款自动采集的一款微信小程序源码 内由表情包,头像,还有壁纸组合而成的一款图片小程序 每一个都自带多种分类,内容丰富运营适合 另外支持插屏广告,激励视频广告,等多种广告 小程序源码下载地址: 微信 ...
- 热门表情包+头像+壁纸自动采集多分类微信小程序源码下载支持多种流量主模式
这是一款自动采集的一款微信小程序源码 内由表情包,头像,还有壁纸组合而成的一款图片小程序 每一个都自带多种分类,内容丰富运营适合 另外支持插屏广告,激励视频广告,等多种广告 废话不多说,下面看小编的 ...
最新文章
- 查找计算机视觉、模式识别、图像处理领域的国际会议和会议排名
- 【转】ABP源码分析二十五:EventBus
- 服务器怎么存储文件节省空间,超大空间云服务器文件存储
- Java集合系列---ConcurrentHashMap源码解析
- golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法
- php用jquery-ajax上传多张图片限制图片大小
- zabbix 监控项自动发现过滤_Zabbix使用javascript+jsonpath预处理动态生成监控项
- vs2008 SP1 安装问题小解决方案
- MATLAB加入螺旋相位板调制,螺旋相位板的操作原理和使用手册_维尔克斯光电
- 普通有刷直流电机 H桥驱动
- html字体字号颜色怎么设置,HTML 字体颜色怎么设置?
- 钉钉企业微信与飞书模式区别
- 深入理解操作系统——datalab-handout
- 微信投票平台防止刷票的方法和原理随笔
- 坚果投影仪怎么才能访问电脑共享文件,详细的操作方法分享
- 莱鸟学spss数据分析之第六章---描述性分析
- eclipse次行风格的设置
- 用AI取代SGD?无需训练ResNet-50,AI秒级预测全部2400万个参数,准确率60% | NeurIPS 2021...
- JZOJ 7066. 【2021.4.24 NOI模拟】ehzeux与圆周(DP)
- 动态规划及动态规划的应用