Содержание материала

А в обработчике OnClick кнопки btRefresh напишем следующее:

Code:

procedure TfmMain.btRefreshClick(Sender: TObject);

var

RootNode: TTreeNode;

hFind: HBLUETOOTH_RADIO_FIND;

hDevFind: HBLUETOOTH_DEVICE_FIND;

FindParams: BLUETOOTH_FIND_RADIO_PARAMS;

SearchParams: BLUETOOTH_DEVICE_SEARCH_PARAMS;

SearchParamsSize: dword;

DevInfo: ^PBLUETOOTH_DEVICE_INFO;

DevInfoSize: dword;

hRadio: THandle;

RadioInfo: PBLUETOOTH_RADIO_INFO;

RadioInfoSize: dword;

RadioNode: TTreeNode;

Loop: integer;

DevNode: TTreeNode;

begin

with TreeView.Items do

begin

BeginUpdate;

 

// Очищаем дерево

for Loop := 0 to Count - 1 do

begin

if TreeView.Items[Loop].ImageIndex > 0 then

CloseHandle(TreeView.Items[Loop].ImageIndex);

if Assigned(TreeView.Items[Loop].Data) then

Dispose(TreeView.Items[Loop].Data);

end;

Clear;

 

// Корневая ветвь в дереве

RootNode := Add(nil, 'Bluetooth Radios');

with RootNode do

begin

Data := nil;

ImageIndex := -1;

end;

 

// Начинаем поиск локальных модулей Bluetooth

FindParams.dwSize := SizeOf(BLUETOOTH_FIND_RADIO_PARAMS);

hFind := BluetoothFindFirstRadio(@FindParams, hRadio);

if hFind <> 0 then begin

repeat

// Получить информацию о радиомодуле

New(RadioInfo);

RadioInfoSize := SizeOf(BLUETOOTH_RADIO_INFO);

FillChar(RadioInfo^, RadioInfoSize, 0);

RadioInfo^.dwSize := RadioInfoSize;

// Ошибки не обрабатываем!!!

BluetoothGetRadioInfo(hRadio, RadioInfo^);

 

// Добавляем радио в дерево

RadioNode := AddChild(RootNode,

string(RadioInfo^.szName) + ' [' +

BTAdrToStr(RadioInfo^.address) + ']');

with RadioNode do

begin

// Так как мы сохраняем Handle, то не закрываем его!

ImageIndex := hRadio;

Data := RadioInfo;

end;

 

// Начинаем поиск устройств для найденного радиомодуля.

SearchParamsSize := SizeOf(BLUETOOTH_DEVICE_SEARCH_PARAMS);

FillChar(SearchParams, SearchParamsSize, 0);

SearchParams.dwSize := SearchParamsSize;

SearchParams.fReturnRemembered := True;

SearchParams.hRadio := hRadio;

 

New(DevInfo);

DevInfoSize := SizeOf(BLUETOOTH_DEVICE_INFO);

FillChar(DevInfo^, DevInfoSize, 0);

DevInfo^.dwSize := DevInfoSize;

 

// Ищем первое

hDevFind := BluetoothFindFirstDevice(SearchParams, DevInfo^);

if hDevFind <> 0 then begin

repeat

// Добавляем в дерево

DevNode := AddChild(RadioNode,

string(DevInfo^.szName) + ' [' +

BTAdrToStr(DevInfo^.Address) + ']');

with DevNode do

begin

Data := DevInfo;

ImageIndex := -2;

end;

 

// Ищем следующее устройство

New(DevInfo);

DevInfoSize := SizeOf(BLUETOOTH_DEVICE_INFO);

FillChar(DevInfo^, DevInfoSize, 0);

DevInfo^.dwSize := DevInfoSize;

until not BluetoothFindNextDevice(hDevFind, DevInfo^);

 

// Поиск устройств закончен

BluetoothFindDeviceClose(hDevFind);

end;

 

// Находим следующее радио

until not BluetoothFindNextRadio(hFind, hRadio);

 

// Поиск радиомодулей закончен

BluetoothFindRadioClose(hFind);

end;

 

EndUpdate;

end;

 

with TreeView do

begin

Selected := RootNode;

Items[0].Expand(True);

end;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить