代码没有那么复杂..
private
{ Private declarations }
SpSharedRecoContext1 : TSpSharedRecoContext;
fMyGrammar : ISpeechRecoGrammar;
procedure SpSharedRecoContext1Recognition(ASender: TObject; StreamNumber: Integer;
StreamPosition: OleVariant;
RecognitionType: SpeechRecognitionType;
const Result: ISpeechRecoResult);
procedure SpSharedRecoContext1Hypothesis(ASender: TObject; StreamNumber: Integer;
StreamPosition: OleVariant;
const Result: ISpeechRecoResult);
过程 TForm1.FormCreate(Sender: TObject); 开始 SpSharedRecoContext1 := TSpSharedRecoContext.Create(self); SpSharedRecoContext1.OnHypothesis := SpSharedRecoContext1Hypothesis; SpSharedRecoContext1.OnRecognition :=SpSharedRecoContext1Recognition; fMyGrammar := SpSharedRecoContext1.CreateGrammar(0); fMyGrammar.DictationSetState(SGDSActive); 结尾; 过程 TForm1.SpSharedRecoContext1Recognition(ASender:TObject;StreamNumber:整数; 流位置:OleVariant; 识别类型:语音识别类型; 常量结果:ISpeechRecoResult); 开始 Memo1.Text := Result.PhraseInfo.GetText(0,-1,true); 结尾; 过程 TForm1.SpSharedRecoContext1Hypothesis(ASender: TObject; StreamNumber: Integer; 流位置:OleVariant; 常量结果:ISpeechRecoResult); 开始 Memo1.Text := Result.PhraseInfo.GetText(0,-1,true); 结尾;
我的问题是 vista-OS 语音命令会拦截我的程序。如果我说“开始”,而不是在 memo1 上写开始,它按我桌面上的开始菜单。或者像 START CANCEL EDIT DELETE SELECT 之类的命令。请帮助.....对不起我的英语