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; } } }
protected virtual void OnChanged(SpeechEventArgs e) { SpeechActionFired?.Invoke(e); }