[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.效果

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值