【发布时间】:2020-05-26 06:05:42
【问题描述】:
我想制作一个程序,当我说它时按键盘字母
namespace LOL
{
public partial class Form1 : Form
{
Choices list = new Choices();
SpeechSynthesizer ss = new SpeechSynthesizer();
PromptBuilder pb = new PromptBuilder();
SpeechRecognitionEngine sre = new SpeechRecognitionEngine();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
list.Add(new string[] { "q", "w", "e" });
Grammar gr = new Grammar(new GrammarBuilder(list));
try
{
sre.RequestRecognizerUpdate();
sre.LoadGrammar(gr);
sre.SpeechRecognized += Sre_SpeechRecognized;
sre.SetInputToDefaultAudioDevice();
sre.RecognizeAsync(RecognizeMode.Multiple);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
button1.Enabled = false;
}
private void Sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
switch (e.Result.Text.ToString())
{
case "q":
SendKeys.Send("q");
break;
case "w":
SendKeys.Send("w");
break;
case "e":
SendKeys.Send("e");
break;
default:
break;
}
}
}
如果我打开记事本并说 q、w、r,它可以工作,但如果我打开其他程序,让我们说如果你按 q,你会赢得一些东西,但它不起作用。我如何使用它?我打开视觉,运行应用程序,然后打开另一个应用程序,一个游戏。并且不起作用。 我认为问题应该出在 SendKeys 但我不知道如何解决它:\ 请问有什么帮助吗?
【问题讨论】:
-
"...如果我打开其他程序..." - 还有什么其他程序?该程序是否具有支持按 q/w/e 的特定功能?你期望会发生什么?是焦点问题吗?作为修复,您能否让您的应用程序优先“关注”其他应用程序?
-
@gravity 它被称为英雄联盟一个 moba,你有一些法术,如果你按 q 激活第一个法术,我想在我施法时激活 q 法术。我对优先级一无所知,我不知道我应该如何优先考虑我的游戏:\
-
不能,key被当前运行的程序截取了。看看您是否可以使用某些功能键或组合键。
-
您需要将其他窗口置于前台
标签: c# speech-recognition