1

再会,

我一直在不知疲倦地搜索 Internet,试图在我的 VB.Net 语音识别应用程序中找到一个如何启动 Windows 语音训练的示例。

我找到了几个例子,但我无法挽救我的生命。

一个这样的例子是在 Visual Studios Fourms 上:

这里

这个特定的示例用户调用“Process.Start”来尝试开始语音训练课程。但是,这对我不起作用。这是该线程的示例:

    Process.Start("rundll32.exe", "C:\Windows\system32\speech\speechux\SpeechUX.dll, RunWizard UserTraining")

会发生什么是我得到和错误说:

       There was a problem starting

      C:\Windows\system32\speech\speechux\SpeechUX.dll

      The specified module could not be found

所以我尝试创建一个快捷方式 (.lnk) 文件,并认为我可以通过这种方式访问​​ DLL。我的捷径也做同样的事情。在快捷方式中,我使用参数调用“rundll32.exe”:

          C:\Windows\System32\rundll32.exe "C:\Windows\system32\speech\speechux\SpeechUX.dll" RunWizard UserTraining 

然后在我的 VB.Net 应用程序中,我使用“Process.Start”并尝试运行快捷方式。

这也给了我同样的错误。然而,快捷方式本身将启动 SPeech 培训课程。诡异的?!?

因此,我更进一步,看看它是否与我的 VB.Net 应用程序和“Process.Start”调用有关。

我创建了一个 VBScript,并使用“Wscript.Shell”指向快捷方式。

运行 VBScript 调用快捷方式,然后看,语音训练开始了!

伟大的!但...

当我尝试从我的 VB.net 应用程序运行 VBscript 时,我再次收到该错误。

这到底是怎么回事?

4

2 回答 2

1

如果您使用的是 64 位操作系统并且想要访问 system32 文件夹,您必须使用目录别名,即“sysnative”。

“C:\windows\sysnative”将允许您访问 system32 文件夹及其所有内容。

老实说,谁在微软决定这只是愚蠢的!

于 2014-04-21T16:46:23.090 回答
1

您的问题可能是您的程序编译为 32 位,而您的操作系统是 64 位,因此,当您尝试从程序访问“C:\Windows\System32\Speech\SpeechUX\SpeechUX.dll”时,您'真的在访问“C:\Windows\SysWOW64\Speech\SpeechUX\SpeechUX.dll”,正如 rundll32.exe 报告的那样,它不存在。

将您的程序编译为 64 位,或尝试使用伪目录 %SystemRoot%\sysnative。

此外,您可能只想运行带有参数的 SpeechUXWiz.exe,而不是 rundll32.exe。

例如。

private Process StartSpeechMicrophoneTraining()
{
    Process process = new Process();
    process.StartInfo.FileName = System.IO.Path.Combine(Environment.SystemDirectory, "speech\\speechux\\SpeechUXWiz.exe");
    process.StartInfo.Arguments = "MicTraining";
    process.Start();
    return process;
}

private Process StartSpeechUserTraining()
{
    Process process = new Process();
    process.StartInfo.FileName = System.IO.Path.Combine(Environment.SystemDirectory, "speech\\speechux\\SpeechUXWiz.exe");
    process.StartInfo.Arguments = "UserTraining";
    process.Start();
    return process;
}

希望有帮助。

在http://en.wikipedia.org/wiki/WoW64上阅读有关 Windows 64 位上的 Windows 32 位的更多信息,或者在http://en.wikipedia.org/wiki/WoW64#Registry_and_file_system上阅读 您的问题

于 2013-12-30T13:21:11.040 回答