windwos下检测3.5毫米耳机插入

由于产品的一个新需求,所以开始研究耳机检测,网络上大部分的代码都是通过com接口实现的。我也是使用这总方法做检测的,继承了IMMNotificationClient类在OnPropertyValueChanged这个方法中收到插拔耳机的回调。但是你一定会发现一个问题就是消息太多了。根本无法识别哪一个回调是插耳机哪一个是拔耳机。我当时的想法就是通过这个消息作为回调触发。而检测耳机是否插拔在其他的地方处理。我自己实现一个检测耳机是否插拔的函数。

int CMMNotificationClientModel::IsCurInsertEarPhone()
{
	IKsJackDescription *pJackDesc = NULL;
	HRESULT hr = S_OK;

	if (!_pPart)
		return -1;

	//获取描述外接设备信息
	hr = _pPart->Activate(CLSCTX_INPROC_SERVER, __uuidof(IKsJackDescription), (void**)&pJackDesc);
	if (hr != S_OK)
	{
		return -1;
	}
	UINT num = 0;
	pJackDesc->GetJackCount(&num);
	//wprintf_s(_T("GetJackCount: %d\n"), num);
	for (UINT j = 0; j < num; ++j)
	{
		KSJACK_DESCRIPTION ksjack_desc = { 0 };

		hr = pJackDesc->GetJackDescription(j, &ksjack_desc);
		if (hr == S_OK)
		{
			//wprintf_s(_T("Jack%d PortConnection: %d\n"), j + 1, ksjack_desc.PortConnection);  //端口类型
			//wprintf_s(_T("Jack%d ConnectionType: %d\n"), j + 1, ksjack_desc.ConnectionType
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值