0
ブックマークしたコマンドまたはURLを開くために音声認識システムを使用しています。私は未知のwin32exceptionエラーに直面していますか?コード内に固定語を設定すると完全に機能しますが、テキストフィールド挿入コマンドでは機能しません。挿入されたコマンドまたはURLのWin32Exceptionを取得する
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