用蓝牙耳机播放键激活PC小娜

如果我们想唤醒隔壁房间Win10 PC上的小娜,为我们播放一首喜欢的歌曲,(我喜欢的是《最初的信仰》)大声呼叫“你好,小娜”,多少有些扰民,(当然如果你的麦克风够灵敏、够多,请关闭这个页面。)因此我尝试使用蓝牙耳机播放键激活小娜,下达语音指令,实现“远距离”语音控制。


我很庆幸,网易云音乐UWP版本的蓝牙耳机控制音乐的播放/暂停/换歌,为我的尝试提供了理论支撑。


一、基本过程

1、利用  RegisterWindowMessage 注册自定义监听消息 SHELLHOOK。

2、利用  RegisterShellHookWindow 注册监听该自定义消息的窗口。

3、在2中窗口的 WindowProc 函数中捕捉播放/暂停 按键,并激活小娜。

4、激活小娜可以用 ShellExecute 运行小娜的快捷方式,再用keybd_event发送按键;

      也可以直接模拟 Win+Shift+C 组合键唤醒小娜(有些杀毒软件会屏蔽对WIN键的模拟)。


二、关键代码

//监听并激活小娜
LRESULT CActiveCortanaDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class


	
	if(message == WM_SHELLHOOKMESSAGE)//WM_APPCOMMAND)
	{

	if(wParam==WM_APPCOMMAND){


      switch (GET_APPCOMMAND_LPARAM(lParam))
      {
      case APPCOMMAND_MEDIA_PLAY_PAUSE:
         AfxMessageBox("PLAY_PAUSE");
         return TRUE;

	  case APPCOMMAND_MEDIA_PLAY:
	
         TCHAR szBuf[MAX_PATH];
         ZeroMemory(szBuf,MAX_PATH);
		 GetCurrentDirectory(MAX_PATH,szBuf);
	     ShellExecute(NULL,"open",CString(szBuf)+"//Cortana.lnk",NULL,NULL,SW_SHOWNORMAL); 
		 Sleep(500);
         keybd_event(VK_TAB,0,0,0);   //按下TAB键 
		 keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);//松开TAB键
		 keybd_event(VK_RETURN,0,0,0);   //按下ENTER键		 
		 keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);//松开ENTER键		
	     
         return TRUE;


	  case APPCOMMAND_MEDIA_PAUSE:
      	
         ZeroMemory(szBuf,MAX_PATH);
		 GetCurrentDirectory(MAX_PATH,szBuf);   
         ShellExecute(NULL,"open",CString(szBuf)+"//Cortana.lnk",NULL,NULL,SW_SHOWNORMAL); 
	     Sleep(500);
         keybd_event(VK_TAB,0,0,0);   //按下TAB键 
		 keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);//松开TAB键
		 keybd_event(VK_RETURN,0,0,0);   //按下ENTER键		 
		 keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);//松开ENTER键		
         return TRUE;

      case APPCOMMAND_MEDIA_STOP:
      //  AfxMessageBox("STOP");
         return TRUE;

      case APPCOMMAND_MEDIA_PREVIOUSTRACK:
       //  AfxMessageBox("PREVIOUSTRACK");
         return TRUE;

      case APPCOMMAND_MEDIA_NEXTTRACK:
       //   AfxMessageBox("NEXTTRACK");
         return TRUE;
      }
		}
	}

	return CDialog::WindowProc(message, wParam, lParam);
}

三、文件下载地址

点击打开链接

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值