[MFC]后台获取讯飞语音输入法内容

          做语音识别项目,不想购买讯飞的语音识别套餐(就是想BAI PIAO)。于是对讯飞输入法的语音部分打起了主意。开始的时候尝试了访问剪切板,发现语音输入不会暂存在剪切板里。又试了一下HOOK键盘消息和鼠标消息,一样获取不到。最终使用MFC的EDIT控件来获取。

1.下载讯飞语音输入法,安装,将语音的快捷键设置成F2。(下面的是绿色板的只有语音功能)

 2.新建一个MFC 工程,添加一个EDIT控件,在属性里将控件设置成不可见(还可以添加一个显示控件,用来显示语音输入法的文字)

3.使用SetTimer,然后在OnTimer里响应一下

SetTimer(0, 20, NULL);

 检测F2有没有按下

bool IsKeyDown = false;
void CVoiceDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if (nIDEvent == 0)
	{
		if (GetKeyState(VK_F2) & 0x8000)
		{
			if (!IsKeyDown)
			{
				IsKeyDown = true;
				SetDlgItemText(IDC_WORD, L"");
				SetDlgItemText(IDC_EDIT_VOICE, L"");
				GetDlgItem(IDC_EDIT_VOICE)->SetFocus();
			}
		}
		else
		{
			if (IsKeyDown)
			{
				IsKeyDown = false;
				CString word = GetStrFromClipboard();
				GetDlgItemText(IDC_EDIT_VOICE, word);
				SetDlgItemText(IDC_WORD, word);
			}
		}
	}
	CDialogEx::OnTimer(nIDEvent);
}

4.效果

猜你喜欢

转载自blog.csdn.net/qq_36251561/article/details/121426820