转载自:http://blog.sina.com.cn/s/blog_648d306d0102vjq5.html 官方网站:http://www.bluetooth.com 蓝牙4.2规范:点击下载1 点击下载2 VC++编程通过Windows Bluetooth API枚举蓝牙适配器及蓝牙设备 #include #include #include #include #include #include #pragma comment(lib,"Bthprops.lib") using namespace std; int main(void) { wcout.imbue(locale("")); HBLUETOOTH_RADIO_FIND hbf = NULL; HANDLE hbr = NULL; HBLUETOOTH_DEVICE_FIND hbdf = NULL; BLUETOOTH_FIND_RADIO_PARAMS btfrp = { sizeof(BLUETOOTH_FIND_RADIO_PARAMS) }; BLUETOOTH_RADIO_INFO bri = { sizeof(BLUETOOTH_RADIO_INFO)}; BLUETOOTH_DEVICE_SEARCH_PARAMS btsp = { sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS) }; BLUETOOTH_DEVICE_INFO btdi = { sizeof(BLUETOOTH_DEVICE_INFO) }; hbf=BluetoothFindFirstRadio(&btfrp, &hbr); bool brfind = hbf != NULL; while (brfind) { if (BluetoothGetRadioInfo(hbr, &bri) == ERROR_SUCCESS) { cout << "Class of device: 0x" << uppercase << hex << bri.ulClassofDevice << endl; wcout <<"Name:"<< bri.szName << endl; cout <<"Manufacture:0x"<< uppercase << hex << bri.manufacturer << endl; cout << "Subversion:0x" << uppercase << hex << bri.lmpSubversion << endl; // btsp.hRadio = hbr; btsp.fReturnAuthenticated = TRUE; btsp.fReturnConnected = FALSE; btsp.fReturnRemembered = TRUE; btsp.fReturnUnknown = TRUE; btsp.cTimeoutMultiplier = 30; hbdf=BluetoothFindFirstDevice(&btsp, &btdi); bool bfind = hbdf != NULL; while (bfind) { wcout << "[Name]:" << btdi.szName; cout << ",[Address]:0x" << uppercase << hex << btdi.Address.ullLong << endl; bfind=BluetoothFindNextDevice(hbdf, &btdi); } BluetoothFindDeviceClose(hbdf); } CloseHandle(hbr); brfind=BluetoothFindNextRadio(hbf, &hbr); } BluetoothFindRadioClose(hbf); _getch(); return 0; } VC++编程通过Bluetooth API调用对话框选择蓝牙设备并显示设备信息 #include #include #include #include #include #include #pragma comment(lib,"Bthprops.lib") using namespace std; int main(void) { BLUETOOTH_SELECT_DEVICE_PARAMS pbtsdp = {sizeof(BLUETOOTH_SELECT_DEVICE_PARAMS) }; pbtsdp.fShowAuthenticated = TRUE; pbtsdp.fShowRemembered = TRUE; pbtsdp.fShowUnknown = TRUE; if (BluetoothSelectDevices(&pbtsdp)) { BLUETOOTH_DEVICE_INFO *pbtdi = pbtsdp.pDevices; BLUETOOTH_ADDRESS_STRUCT addr; for (ULONG cDevices = 0; cDevices < pbtsdp.cNumDevices; cDevices++) { wcout.imbue(locale("")); cout << "[Class]:0x" << uppercase << hex << pbtdi->ulClassofDevice; wcout << ",[Name]:"<<wstring(pbtdi->szName) << ""; addr = pbtdi->Address; cout <<",[Address]:0x"<<uppercase<< hex << addr.ullLong << endl; } BluetoothSelectDevicesFree(&pbtsdp); } _getch(); return 0; }