0
我正在做一个语音识别系统来打开书签命令或网址。我面临一个未知的win32exception错误?在代码中设置固定字符完美,但不适用于插入文本字段的命令。获取Win32Exception插入的命令或URL
这里是我的代码:
namespace Voice_Bookmarking_System
{
public partial class Form1 : Form
{
SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var frm1 = new Design();
frm1.ShowDialog(this); // make sure this instance of Form1 is visible
label1.Text = frm1.t1;
label2.Text = frm1.r1;
LoadGrammars();
StartRecognition();
}
private void LoadGrammars()
{
Choices commands = new Choices();
commands.Add(new string[] { "'" + label1.Text + "'", "a",});
GrammarBuilder grammarbuilder = new GrammarBuilder();
grammarbuilder.Append(commands);
Grammar grammar = new Grammar(grammarbuilder);
recEngine.LoadGrammarAsync(grammar);
}
private void StartRecognition()
{
recEngine.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(recEngine_SpeechDetected);
recEngine.SpeechRecognitionRejected += new EventHandler<SpeechRecognitionRejectedEventArgs>(recEngine_SpeechRecognitionRejected);
recEngine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recEngine_SpeechRecognized);
recEngine.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(recEngine_RecognizeCompleted);
Thread t1 = new Thread(delegate()
{
recEngine.SetInputToDefaultAudioDevice();
recEngine.RecognizeAsync(RecognizeMode.Single);
});
t1.Start();
}
private void recEngine_SpeechDetected(object sender, SpeechDetectedEventArgs e)
{
textBox1.Text = "Recognizing voice command...";
}
private void recEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Text.ToLower() == "'" + label1.Text + "'")
{
try
{
Process.Start("'" + label2.Text + "'");
}
catch (Win32Exception)
{
Process.Start("IExplore.exe", "'"+label2.Text+"'");
}
}
switch (e.Result.Text)
{
case "a":
{
Process.Start("http://www.google.com");
break;
}
}
textBox1.Text = e.Result.Text;
}
private void recEngine_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)
{
textBox1.Text = "Failure. Please try again!";
}
private void recEngine_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
{
recEngine.RecognizeAsync();
}
}
}
这条线,我得到了我的win32exception错误:
Process.Start("IExplore.exe", "'"+label2.Text+"'");
消息是这个样子:
型系统的”异常。 ComponentModel.Win32Exception'发生在System.dll中但未在用户代码中处理
其他信息:系统找不到指定的文件
了'label2.Text'的值是一个文本..更多先进的,当你通过'label2.Text'不带引号那么会发生什么。 。 'Process.Start( “IExplore.exe”,label2.Text);'然后会发生什么......? – MethodMan
转换ToString? Unicode字符我的意思是... –
什么是'label2.Text'的瓦利?..? – MethodMan