Я попытался использовать IspObjectToken :: DisplayUI из SAPI 5.4 в C#, и я не знаю, какие именно параметры для этого.IspObjectToken :: DisplayUI
void ISpObjectToken.DisplayUI(ref _RemotableHandle HWndParent, string pszTitle, string pszTypeOfUI,IntPtr pvExtraData, uint cbExtraData,object punkObject)
Я знаю, что мы должны поставить нуль для pszTitle
, и pszTypeOfUI
мы должны использовать один из поддерживаемых UI как MicTraining
или AddRemoveWord
, но я ничего не знаю об остальной части этого. Я использую Windows 7 на своем ноутбуке.
Редактировать: Это код, который я написал, и, очевидно, он не работает.
private void button1_Click(object sender, EventArgs e)
{
int pfSupported;
string extradata = "test\0";
IntPtr pvExtraData = Marshal.StringToHGlobalUni(extradata);
uint cbExtraData = (uint)extradata.Length * sizeof(Char);
Speechlib._RemotableHandle rh = new Speechlib._RemotableHandle();
rh = getRemotableHandle(this.Handle);
ISpObjectToken isot = (ISpObjectToken)new SpObjectToken();
isot.IsUISupported("AddRemoveWord", pvExtraData, cbExtraData, null, out pfSupported);
if (pfSupported == 1)
{
isot.DisplayUI(ref rh, null, "AddRemoveWord", pvExtraData, cbExtraData, null);
}
}
SpeechLib._RemotableHandle getRemotableHandle(IntPtr handle)
{
IntPtr address = Marshal.AllocHGlobal(IntPtr.Size);
Marshal.WriteIntPtr(address, handle);
return (SpeechLib._RemotableHandle)Marshal.PtrToStructure(address, typeof(SpeechLib._RemotableHandle));
}
Спасибо большое за подробное объяснение. Я был бы очень благодарен, если бы вы просто взглянули на код, который я добавил к этому вопросу. Еще раз спасибо. –
@ lesley-gushurst имеет довольно разумную реализацию. –
Если мы воспользуемся ниже, можем ли мы использовать его для «AddPronunciation»? Потому что это вызовет окно произношения, но оно не добавит к нему слова. Вы знаете какое-либо решение для этого? Использует 'IspObjectToken' вместо' ISpeechRecognizer' помощь для решения этой проблемы? Большое спасибо. –