如何程序去查看 电脑中已经连接的蓝牙设备的个数 急!!!!!!!!!!

dns007 2010-03-05 02:39:00
需求如标题

另外 就是点击我的电脑 在光盘下面有个蓝牙图标(其它设备) 双击进去 会排列 已经搜索到的蓝牙设备的图标,我原想计算这个目录下图标的个数,但是不知道如何进到 我的电脑\\蓝牙(其它设备) 这个目录。

总之 我只要得到可连接蓝牙设备的个数即可以上,求解!!!
...全文
1204 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Qiudejian07 2011-12-31
  • 打赏
  • 举报
回复
你有关于蓝牙连接的方式,我搜索到设备后进行连接的时候 手机会提示要输入PIN 但是这个PIN 是什么 ?
shetianlang2010 2010-12-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 visualeleven 的回复:]
已经发送出去了,请注意查收。。。。。。。。。。。
[/Quote]

能否发一份给我 shetianlang2010@126.com
谢谢

好像很多帖子都有仁兄的身影啊
liubin987654321 2010-11-02
  • 打赏
  • 举报
回复
给我发一份完整代码好吗,谢谢!
liubin_19830706@yahoo.com.cn
dns007 2010-03-08
  • 打赏
  • 举报
回复
引用 10 楼 visualeleven 的回复:
已经发送出去了,请注意查收。。。。。。。。。。。


谢谢了 结贴先 ! 再研究程序,
rrobin 2010-03-06
  • 打赏
  • 举报
回复
请问,如果要用pc连接蓝牙hid,怎么连接呢?
Eleven 2010-03-05
  • 打赏
  • 举报
回复
已经发送出去了,请注意查收。。。。。。。。。。。
Eleven 2010-03-05
  • 打赏
  • 举报
回复
引用 8 楼 lipei1220 的回复:
引用 6 楼 visualeleven 的回复:
我是实在EVC下写的,你在其他平台上的话,可能要改一些,比如#pragma comment(lib,"ws2_lib"),你可能要修改成#pragma comment(lib,"ws2_32.lib")

再请教下  我是在VS2008下 build  是不是要有些 头文件不可用啊  如下面这个错误
fatal error C1083: 无法打开包括文件:“mbctype.h”: No such file or directory

如果要转换的话 要改那些东西呢 ?

OK,我帮你在VS2008里转一下吧,稍后发给你,请注意查收。。。。
dns007 2010-03-05
  • 打赏
  • 举报
回复
引用 6 楼 visualeleven 的回复:
我是实在EVC下写的,你在其他平台上的话,可能要改一些,比如#pragma comment(lib,"ws2_lib"),你可能要修改成#pragma comment(lib,"ws2_32.lib")


再请教下 我是在VS2008下 build 是不是要有些 头文件不可用啊 如下面这个错误
fatal error C1083: 无法打开包括文件:“mbctype.h”: No such file or directory

如果要转换的话 要改那些东西呢 ?
Eleven 2010-03-05
  • 打赏
  • 举报
回复
OK,发给你,请注意查收。。。。。。。。。。
Eleven 2010-03-05
  • 打赏
  • 举报
回复
引用 4 楼 lipei1220 的回复:
引用 1 楼 visualeleven 的回复:
昏,昨天刚做了一个,贴代码给你吧:

能否发一份到我的邮箱啊  lipei1220@163.com  感谢了!


我是实在EVC下写的,你在其他平台上的话,可能要改一些,比如#pragma comment(lib,"ws2_lib"),你可能要修改成#pragma comment(lib,"ws2_32.lib")
Eleven 2010-03-05
  • 打赏
  • 举报
回复
至于你的要求 我只要得到可连接蓝牙设备的个数即可
------------------------------------------------
这个更简单,扫描到数据以后,m_pBlueTooth->vecBthDevInfo.size()保存的就是蓝牙设备的个数


靠 一个用户只允许连续回复3次。
dns007 2010-03-05
  • 打赏
  • 举报
回复
引用 1 楼 visualeleven 的回复:
昏,昨天刚做了一个,贴代码给你吧:


能否发一份到我的邮箱啊 lipei1220@163.com 感谢了!
Eleven 2010-03-05
  • 打赏
  • 举报
回复
使用方法定义个CBlueTooth对象,如下所述:
顶一个CBlueTooth m_pBlueTooth = NULL; //初始化时候为NULL
if(NULL != m_pBlueTooth)
{
delete m_pBlueTooth;
m_pBlueTooth = NULL;
}
m_pBlueTooth = new CBlueTooth;
if(!m_pBlueTooth)
{
return FALSE;
}

BOOL bRet = m_pBlueTooth->Init(); // 初始化蓝牙设备

下面这个函数是扫描周边蓝牙设备,并把结果显示在ListBox中:
void CBTDEMODlg::OnScanBlueToothDevice()
{
// TODO: Add your control notification handler code here
ASSERT(m_pBlueTooth);
if(m_pBlueTooth->ScanDeviceInfo(NULL, GetSafeHwnd()))
{
CString strName(_T(""));
CString strValue(_T(""));
CString strText(_T(""));

m_list.ResetContent();

for(vector<BlueToothDeviceInfo>::const_iterator iter = m_pBlueTooth->vecBthDevInfo.begin(); iter != m_pBlueTooth->vecBthDevInfo.end(); iter++)
{
strName.Empty();
strName.Format(_T("%s"), iter->szName);
strValue.Empty();
strValue.Format(_T("%s"), m_pBlueTooth->FormatBlueToothAddress(iter->RemoteAddr));
strText.Empty();
strText.Format(_T("%s (%s)"), strName, strValue);

m_list.AddString(strText);
}
}
}
Eleven 2010-03-05
  • 打赏
  • 举报
回复
----------------------------------------------------------------------------------------
.cpp源文件
// BuleTooth.cpp: implementation of the CBuleTooth class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "BTDEMO.h"
#include <bt_api.h>
#include "BuleTooth.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#define UM_SCANBLUETOOTHDEVICE WM_USER+10001
DEFINE_GUID(SerialPortServiceClass_UUID, 0x00001101, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);

CBlueTooth::CBlueTooth() : m_hEvent(NULL), m_hEventNotify(NULL), m_hWnd(NULL), m_sockClient(INVALID_SOCKET)
{
WSADATA wsa;
if(0 != WSAStartup(MAKEWORD(2, 2), &wsa))
{
AfxMessageBox(_T("WSAStartup() call failed."));
}

vecBthDevInfo.clear();
}

CBlueTooth::~CBlueTooth()
{
if(NULL != m_hEvent && INVALID_HANDLE_VALUE != m_hEvent)
{
SetEvent(m_hEvent);
}
CloseHandle(m_hEvent);
CloseHandle(m_hEventNotify);
if(INVALID_SOCKET != m_sockClient)
{
closesocket(m_sockClient);
m_sockClient = INVALID_SOCKET;
}
RemoveAllBlueToothDevInfo();

WSACleanup();
}

BOOL CBlueTooth::Init()
{
m_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if(!m_hEvent)
{
return FALSE;
}
return TRUE;
}

BOOL CBlueTooth::ScanDeviceInfo(HANDLE hEventNotify, HWND hWnd)
{
if(hEventNotify || (NULL != hWnd && IsWindow(hWnd)))
{
m_hEventNotify = hEventNotify;
m_hWnd = hWnd;
HANDLE hThread = CreateThread(NULL, 0, ThreadProcScanBlueToothDevice, this, 0, NULL);
CloseHandle(hThread);
hThread = NULL;
}
return (ScanBlueToothDevice() >= 0);
}

DWORD CBlueTooth::ThreadProcScanBlueToothDevice(LPVOID lpParameter)
{
CBlueTooth* pInfo = (CBlueTooth*)lpParameter;
ASSERT(pInfo != NULL);
pInfo->ThreadHandleScanBlueToothDevice();
return 0;
}

void CBlueTooth::ThreadHandleScanBlueToothDevice()
{
int nRetValue = ScanBlueToothDevice();
if((NULL != m_hEventNotify) && (INVALID_HANDLE_VALUE != m_hEventNotify))
{
SetEvent(m_hEventNotify);
}

if((NULL != m_hWnd) && (IsWindow(m_hWnd)))
{
PostMessage(m_hWnd, UM_SCANBLUETOOTHDEVICE, (WPARAM)nRetValue, 0);
}
}

int CBlueTooth::ScanBlueToothDevice()
{
vecBthDevInfo.clear();

CWaitCursor wait;

WSAQUERYSET QuerySet;
DWORD flags = LUP_RETURN_NAME | LUP_RETURN_ADDR;

union
{
CHAR buf[5000];
double __unused;
};

LPWSAQUERYSET pResult = (LPWSAQUERYSET)buf;
DWORD dwSize = sizeof(buf);
ZeroMemory(&QuerySet, sizeof(QuerySet));
QuerySet.dwSize = sizeof(QuerySet);
QuerySet.dwNameSpace = NS_BTH;

if(WAIT_OBJECT_0 == WaitForSingleObject(m_hEvent, 0))
{
return -1;
}

HANDLE hLookUp = NULL;
if(ERROR_SUCCESS != WSALookupServiceBegin(&QuerySet, LUP_CONTAINERS, &hLookUp))
{
wait.Restore();
DWORD dwRet = WSAGetLastError();
CString str(_T(""));
str.Format(_T("%d"), dwRet);
AfxMessageBox(str);
return -1;
}

ZeroMemory(pResult, sizeof(WSAQUERYSET));
pResult->dwSize = sizeof(WSAQUERYSET);
pResult->dwNameSpace = NS_BTH;
pResult->lpBlob = NULL;
BOOL bError = FALSE;
while(TRUE)
{
if(WAIT_OBJECT_0 == WaitForSingleObject(m_hEvent, 0))
{
break;
}
if(ERROR_SUCCESS == WSALookupServiceNext(hLookUp, flags, &dwSize, pResult))
{
ASSERT(1 == pResult->dwNumberOfCsAddrs);
BT_ADDR addr = ((SOCKADDR_BTH*)pResult->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;
BOOL bRet = pResult->lpszServiceInstanceName && (*(pResult->lpszServiceInstanceName));
BlueToothDeviceInfo info;
if(bRet)
{
_stprintf(info.szName, _T("%s"), pResult->lpszServiceInstanceName);
}
info.RemoteAddr = addr;
CSADDR_INFO* pAddr = (CSADDR_INFO*)pResult->lpcsaBuffer;
info.LocalAddr = ((SOCKADDR_BTH*)pAddr->LocalAddr.lpSockaddr)->btAddr;
AddBlueToothDevInfo(info);
}
else
{
if(WSA_E_NO_MORE != WSAGetLastError())
{
bError = TRUE;
wait.Restore();
AfxMessageBox(_T("Lookup bluetooth device failed."));
}
break;
}
}

WSALookupServiceEnd(hLookUp);

wait.Restore();

if(bError)
{
return -1;
}

return (int)vecBthDevInfo.size();
}

int CBlueTooth::AddBlueToothDevInfo(BlueToothDeviceInfo& DevInfo)
{
if(FindBlueToothDevInfo(DevInfo.RemoteAddr) >= 0)
{
return -1;
}
vecBthDevInfo.push_back(DevInfo);
return 0;
}

int CBlueTooth::FindBlueToothDevInfo(BT_ADDR addr, BlueToothDeviceInfo* pBlueToothDevInfo /* = NULL */)
{
int i = 0;
for(vector<BlueToothDeviceInfo>::const_iterator iter = vecBthDevInfo.begin(); iter != vecBthDevInfo.end(); iter++)
{
//BlueToothDeviceInfo& info = *iter;
if(iter->RemoteAddr == addr)
{
if(pBlueToothDevInfo)
{
memcpy(pBlueToothDevInfo, iter, sizeof(BlueToothDeviceInfo));
}
return i;
}
i++;
}
return -1;
}

int CBlueTooth::FindBlueToothDevInfo(LPCTSTR lpszName, BlueToothDeviceInfo* pBlueToothDevInfo /* = NULL */)
{
if(!lpszName || _tcslen(lpszName)<1)
{
return -1;
}
int i = 0;
for(vector<BlueToothDeviceInfo>::const_iterator iter = vecBthDevInfo.begin(); iter != vecBthDevInfo.end(); iter++)
{
if(0 == _tcsicmp(iter->szName, lpszName))
{
if(pBlueToothDevInfo)
{
memcpy(pBlueToothDevInfo, iter, sizeof(BlueToothDeviceInfo));
}
return i;
}
i++;
}
return i;
}

void CBlueTooth::RemoveAllBlueToothDevInfo()
{
vecBthDevInfo.clear();
}

BOOL CBlueTooth::String2GUID(LPCTSTR lpszGUID, GUID* pGUID)
{
if(lpszGUID)
{
return FALSE;
}
int data1 = 0;
int data2 = 0;
int data3 = 0;
int data4[8] = {0};

if(11 == _stscanf(lpszGUID, _T("%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n"),
&data1, &data2, &data3, &data4[0], &data4[1], &data4[2], &data4[3], &data4[4],
&data4[5], &data4[6], &data4[7]))
{
pGUID->Data1 = data1;
pGUID->Data2 = data2 & 0xFFFF;
pGUID->Data3 = data3 & 0xFFFF;

for(int i=0; i<sizeof(data4)/sizeof(data4[0]); i++)
{
pGUID->Data4[i] = data4[i] & 0xFF;
}
return TRUE;
}
return FALSE;
}

int CBlueTooth::ConnectToBlueToothServer(BT_ADDR ServerAddress, LPCTSTR lpszServerGUID)
{
if(INVALID_SOCKET == m_sockClient)
{
GUID ServerGuid;
if(!String2GUID(lpszServerGUID, &ServerGuid))
{
return -1;
}
m_sockClient = socket(AF_BT, SOCK_STREAM, BTHPROTO_RFCOMM);
if(INVALID_SOCKET == m_sockClient)
{
return WSAGetLastError();
}

SOCKADDR_BTH sa;
memset(&sa, 0, sizeof(sa));

sa.addressFamily = AF_BT;
sa.serviceClassId = ServerGuid;
sa.btAddr = ServerAddress;
if(SOCKET_ERROR == connect(m_sockClient, (LPSOCKADDR)&sa, sizeof(sa)))
{
closesocket(m_sockClient);
m_sockClient = INVALID_SOCKET;
return WSAGetLastError();
}
}
return 0;
}

void CBlueTooth::Disconnect()
{
if(INVALID_SOCKET == m_sockClient)
{
return;
}
shutdown(m_sockClient, SD_BOTH);
closesocket(m_sockClient);
m_sockClient = INVALID_SOCKET;
}

int CBlueTooth::TransmiteData(LPVOID lpData, int nSize, BOOL bSend)
{
if(INVALID_SOCKET == m_sockClient)
{
return -1;
}
if(!lpData)
{
return -1;
}
if(nSize < 1)
{
return 0;
}

int nByte = 0;
if(bSend)
{
nByte = send(m_sockClient, (char*)lpData, nSize, 0);
}
else
{
nByte = recv(m_sockClient, (char*)lpData, nSize, 0);
}

if(nByte > 0)
{
return nByte;
}

int nError = WSAGetLastError();
switch(nError)
{
case WSAENETDOWN:
case WSAENOTCONN:
case WSAENOTSOCK:
case WSAESHUTDOWN:
case WSAETIMEDOUT:
{
Disconnect();
return -2;
}
break;
case WSAEWOULDBLOCK:
return -3;
default:
return -1;
}
return -1;
}

int CBlueTooth::Send(LPVOID lpData, int nSize)
{
return TransmiteData(lpData, nSize, TRUE);
}

int CBlueTooth::Recv(LPVOID lpData, int nSize)
{
long cmd = FIONREAD;
ULONG argp = 0;
BOOL err = ioctlsocket(m_sockClient, cmd, (ULONG*)&argp);

if(err || argp < 1)
{
return 0;
}

return TransmiteData(lpData, nSize, FALSE);
}

CString CBlueTooth::FormatBlueToothAddress(BT_ADDR addr)
{
ASSERT(addr);
BLUETOOTH_ADDRESS_INFO Address;
BYTE* pAddr = (BYTE*)&addr;
CString strAddr(_T(""));
strAddr.Format(_T("%02x:%02x:%02x:%02x%02x:%02x"), pAddr[0], pAddr[1], pAddr[2], pAddr[3], pAddr[4], pAddr[5]);
return strAddr;
}
Eleven 2010-03-05
  • 打赏
  • 举报
回复
昏,昨天刚做了一个,贴代码给你吧:
.h头文件
// BuleTooth.h: interface for the CBuleTooth class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BULETOOTH_H__1B607AE1_5016_4435_BF81_A97644CB4170__INCLUDED_)
#define AFX_BULETOOTH_H__1B607AE1_5016_4435_BF81_A97644CB4170__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <initguid.h>
#include <ws2bth.h>
#include <bthapi.h>
#include <winsock2.h>
#pragma comment(lib ,"ws2_32.lib")

#include <vector>
using namespace std;

#define MAX_BLUETOOTH_DEVICE_NAME 64

typedef struct _BLUETOOTH_ADDRESS_INFO_
{
union
{
BT_ADDR ullLong;
BYTE rgBytes[6];
};
}BLUETOOTH_ADDRESS_INFO;

typedef struct _BLUETOOTH_DEVICE_INFO_
{
_BLUETOOTH_DEVICE_INFO_()
{
ZeroMemory(szName, sizeof(szName));
ZeroMemory(&RemoteAddr, sizeof(RemoteAddr));
ZeroMemory(&LocalAddr, sizeof(LocalAddr));
}
TCHAR szName[MAX_BLUETOOTH_DEVICE_NAME];
BT_ADDR RemoteAddr;
BT_ADDR LocalAddr;
}BlueToothDeviceInfo;

class CBlueTooth
{
public:
CBlueTooth();
virtual ~CBlueTooth();

public:
vector<BlueToothDeviceInfo> vecBthDevInfo;

public:
BOOL Init();
int ScanBlueToothDevice();
CString FormatBlueToothAddress(BT_ADDR addr);
BOOL ScanDeviceInfo(HANDLE hEventNotify = NULL, HWND hWnd = NULL);
int ConnectToBlueToothServer(BT_ADDR ServerAddress, LPCTSTR lpszServerGUID);
BOOL IsConnect()
{
return INVALID_SOCKET != m_sockClient;
}
void Disconnect();
int TransmiteData(LPVOID lpData, int nSize, BOOL bSend);
int Send(LPVOID lpData, int nSize);
int Recv(LPVOID lpData, int nSize);
int FindBlueToothDevInfo(LPCTSTR lpszName, BlueToothDeviceInfo* pBlueToothDevInfo = NULL);
int FindBlueToothDevInfo(BT_ADDR addr, BlueToothDeviceInfo* pBlueToothDevInfo = NULL);

private:
void ThreadHandleScanBlueToothDevice();
static DWORD WINAPI ThreadProcScanBlueToothDevice(LPVOID lpParameter);
void RemoveAllBlueToothDevInfo();
int ScanBlueToothDeviceFinished(int nRet);
BOOL String2GUID(LPCTSTR lpszGUID, GUID* pGUID);
int AddBlueToothDevInfo(BlueToothDeviceInfo& DevInfo);

private:
HANDLE m_hEvent;
CString m_strCurDir;
SOCKET m_sockClient;

HANDLE m_hEventNotify;
HWND m_hWnd;
};

#endif // !defined(AFX_BULETOOTH_H__1B607AE1_5016_4435_BF81_A97644CB4170__INCLUDED_)


2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧