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

Члены:

dwSize

Должен быть равен размеру структуры (dwSize := SizeOf(BLUETOOTH_RADIO_INFO))

cNumOfClasses

Входной параметр. Количество записей в массиве prgClassOfDevice. Если 0, то ищутся все устройства.

prgClassOfDevices

Входной параметр. Массив COD (классов устройств), которые необходимо искать.

pszInfo

Входной параметр. Если не nil, то задает текст заголовка окна выбора устройства.

hwndParent

Входной параметр. Handle родительского окна для диалога выбора устройства. Если 0, то родителем будет Desktop.

fForceAuthentication

Входной параметр. Если TRUE, то требует принудительной авторизации устройств.

fShowAuthenticated

Входной параметр. Если TRUE, то авторизованные устройства будут доступны для выбора.

fShowRemembered

Входной параметр. Если TRUE, то запомненные устройства будут доступны для выбора.

fShowUnknown

Входной параметр. Если TRUE, то неизвестные (неавторизованные и не запомненные) устройства будут доступны для выбора.

fAddNewDeviceWizard

Входной параметр. Если TRUE, то запускает мастер добавления нового устройства.

fSkipServicesPage

Входной параметр. Если TRUE, то пропускает страницу Сервисы в мастере.

pfnDeviceCallback

Входной параметр. Если не nil, то является указателем на функцию обратного вызова, которая вызывается для каждого найденного устройства. Если функция вернет TRUE, то устройства добавляется в список, если нет, то устройство игнорируется.

pvParam

Входной параметр. Его значение будет передано функции pfnDeviceCallback в качестве параметра pvParam.

cNumDevices

Как входной параметр количество устройств, которое требуется вернуть. Если 0, то нет ограничений. Как выходной параметр количество возвращенных устройств (выбранных).

pDevices

Выходной параметр. Указатель на массив структур BLUETOOTH_DEVICE_INFO. Для его освобождения используйте функцию BluetoothSelectDevicesFree.
Важно: В оригинале этот параметр объявлен как PBLUETOOTH_DEVICE_INFO. По этому поводу здесь много комментариев.

BluetoothSelectDevicesFree - функция должна вызываться, только если вызов BluetoothSelectDevices был успешен. Эта функция освобождает память и ресурсы, задействованные функцией BluetoothSelectDevices в структуре BLUETOOTH_SELECT_DEVICE_PARAMS.

Объявление функции:

function BluetoothSelectDevices(
pbtsdp : PBLUETOOTH_SELECT_DEVICE_PARAMS): BOOL; stdcall;

Параметры:

pbtsdp

Описание смотрите выше в описании структуры.

Возвращаемые значения:

· TRUE - если вызов успешен,
· FALSE - нечего освобождать.

Управление сервисами

Для управления сервисами Microsoft Bluetooth API предоставляет функцию:

BluetoothSetServiceState - включает или выключает указанный сервис для устройства Bluetooth. Система проецирует сервис Bluetooth на соответствующий драйвер. При отключении сервиса драйвер удаляется. При его включении драйвер устанавливается. Если выполняется включение не поддерживаемого сервиса, то драйвер не будет установлен.

Объявление функции:

Code:

function BluetoothSetServiceState(

hRadio : Thandle;

var pbtdi : PBLUETOOTH_DEVICE_INFO;

const pGuidService : TGUID;

dwServiceFlags : DWORD): DWORD; stdcall;

 

 
Параметры:

hRadio

Описатель радиомодуля.

pbtdi

Указатель на структуру BLUETOOTH_DEVICE_INFO.

pGuidService

GUID сервиса, который необходимо включить/выключить.

dwServiceFlags

Флаги управления сервисом:
BLUETOOTH_SERVICE_DISABLE отключает сервис;
BLUETOOTH_SERVICE_ENABLE включает сервис.

 
Возвращает ERROR_SUCCESS если вызов прошел успешно. Если вызов не удался вернет один из следующих кодов:

ERROR_INVALID_PARAMETER

Неверные флаги в dwServiceFlags

ERROR_SERVICE_DOES_NOT_EXIST

Указанный сервис не поддерживается

Другие ошибки Win32

 

Важно: В оригинале (см. примечание выше) функция выглядит вот так:

function BluetoothSetServiceState(
hRadio : Thandle;
pbtdi : PBLUETOOTH_DEVICE_INFO;
const pGuidService : TGUID;
dwServiceFlags : DWORD): DWORD; stdcall;

Это не верно, так как в документации Microsoft указано, что параметр pbtdi должен передаваться как указатель (что подразумевает запись PBLUETOOTH_DEVICE_INFO), но как я писал выше, этот тип ошибочен. Он не является указателем. Я изменил функцию так, как показано выше (так она и должна быть, если не менять определение типа).

Как использовать функцию? Давайте добавим к ActionList еще одну TAction с такими свойствами:

Свойство

Значение

Caption

Disable

Name

acEnable

И добавим на Panel еще одну кнопку TButton, установив у нее следующие свойства:

Свойство

Значение

Action

acEnable

Name

btEnable

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

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

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

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


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