示例#1
0
        private void TrayAgent_SpeechActionFired(SpeechEventArgs e)
        {
            SynthesizerState state = speech.State;

            if (e.Actions == Actions.ABOUT || e.Actions == Actions.RESTORE || e.Actions == Actions.EXIT)
            {
                EventFired?.Invoke(e);
                return;
            }


            if (e.Actions == Actions.HOTKEY_FIRED)
            {
                string lang   = "";
                string newMD5 = "";

                string textBeforeCopy = Clipboard.GetText(TextDataFormat.Text);
                Util.Delay(10);
                clipboardBackup.Backup();

                Util.Delay(5);
                Util.PressKey(Keys.ControlKey, false);
                Util.Delay(5);
                Util.PressKey(Keys.C, false);
                Util.Delay(20);
                Util.PressKey(Keys.C, true);
                Util.Delay(5);
                Util.PressKey(Keys.ControlKey, true);
                Util.Delay(400);

                string text = Clipboard.GetText(TextDataFormat.Text);

                clipboardBackup.Restore();



                if (string.IsNullOrEmpty(text) || textBeforeCopy.Equals(text))
                {
                    sound.Play();

                    if (state == SynthesizerState.Speaking)
                    {
                        SpeakPause();
                        return;
                    }
                    if (state == SynthesizerState.Paused)
                    {
                        SpeakResume();
                        return;
                    }
                }

                Parallel.Invoke(() =>
                {
                    Debug.WriteLine("Begin GetMd5Hash task...");
                    newMD5 = Util.GetMd5Hash(text);
                    Debug.WriteLine("End GetMd5Hash task...");
                }, () =>
                {
                    Debug.WriteLine("Begin languageDetection task...");
                    lang = languageDetection.Detect(text);
                    Debug.WriteLine("End languageDetection task...");
                }, () =>
                {
                    Debug.WriteLine("Begin Beep task...");
                    sound.Play();
                    Debug.WriteLine("End Beep task...");
                }
                                );

                //if the text is the same
                if (newMD5.Equals(md5))
                {
                    if (speech.State == SynthesizerState.Ready)
                    {
                        md5 = "";
                    }

                    if (state == SynthesizerState.Speaking)
                    {
                        SpeakPause();
                    }
                    if (state == SynthesizerState.Paused)
                    {
                        SpeakResume();
                    }
                }
                //if the text has changed
                if (!newMD5.Equals(md5))
                {
                    SpeakStop();
                    SpeakStart(text, lang);
                    md5 = newMD5;
                }
            }
        }
示例#2
0
 protected virtual void OnChanged(SpeechEventArgs e)
 {
     SpeechActionFired?.Invoke(e);
 }