Nyalakan / matikan radio / adaptor Bluetooth dari cmd / powershell di Windows 10

Tugas yang sederhana, bisa dikatakan, dan saya belum menemukan solusi yang memuaskan. Apa yang telah saya coba (dengan musik yang diputar melalui speaker yang terhubung dengan Bluetooth untuk benar-benar mengetahui keadaan radio):

  • menggunakan devcon sebagai admin: devcon menonaktifkan USB\VID_8087&PID_07DC&REV_0001 (yang merupakan HW ID dari adaptor Bluetooth saya)... membutuhkan reboot untuk bekerja...
  • menggunakan powershell sebagai admin: Disable-NetAdapter "Bluetooth Network Connection 3" (yang merupakan terjemahan dari nama adaptor Bluetooth saya)... itu menonaktifkan driver PAN, tetapi speaker Bluetooth terus memutar musik...
  • menggunakan net sebagai admin: net stop bthserv... tidak benar-benar mematikan radio (speaker BT terus memutar musik)
  • menggunakan .NET: Halaman yang paling relevan di MSDN tidak mengatakan sepatah kata pun tentang menghidupkan/mematikan adaptor.
  • menggunakan penjelajah: ms-settings:bluetooth atau explorer.exe %LocalAppData%\Packages\windows.immersivecontrolpanel_cw5n1h2txyewy\LocalState\Indexed\Settings\cs-CZ\AAA_SettingsPagePCSystemBluetooth.settingcontent-ms... membuka panel pengaturan Bluetooth, tetapi saya masih harus mengklik toggle

Saya tidak percaya Microsoft akan begitu bodoh untuk tidak menyediakan perintah seperti itu ...

Setelah menyerah untuk mencari solusi siap pakai, saya menemukan bahwa aplikasi Universal Windows Platform memiliki akses ke radio control API.

Jadi saya menggabungkan contoh aplikasi kontrol radio dengan aplikasi yang dikendalikan oleh commandline, dan hasilnya ada di sini: https://github.com/peci1/RadioControl . Ini diterbitkan di Windows Store.

Secara umum, tidak mungkin membiarkan aplikasi berjalan di latar belakang, jadi Anda harus meluncurkan GUI terlebih dahulu, dan kemudian Anda dapat memanggilnya dari commandline seperti

radiocontrol.exe 0 on
radiocontrol.exe Bluetooth off

Fitur inti yang dibutuhkan aplikasi ini adalah:

using Windows.Devices.Radios;
await Radio.RequestAccessAsync();
var radios = await Radio.GetRadiosAsync();
await radios[0].SetStateAsync(RadioState.On);

Kemudian Anda juga perlu menambahkan kemampuan Radio ke manifes aplikasi:

Dan untuk mengizinkan kontrol dari commandline, Anda perlu menimpa metode protected override async void OnActivated(IActivatedEventArgs args) di App.xaml.cs dan melakukan pemrosesan di cabang seperti ini:

switch (args.Kind)
        {
            case ActivationKind.CommandLineLaunch:
Komentar (2)

Inilah solusi parsial: wmic path Win32_PNPEntity where "caption like '%bluetooth%' AND DeviceID like 'USB\\%'" call disable tentu saja membuat saklar On/Off Bluetooth menghilang dan Device Manager melaporkan Perangkat ini dinonaktifkan. (Kode 22). Apakah itu cukup untuk mematikan radio, saya tidak yakin.

Saya tidak dapat menemukan dokumentasi tentang argumen apa yang diterima call. Saya pikir seharusnya ada semacam rfkill di sini.

Komentar (1)

Menjalankan perintah berikut ini dari Command Prompt (sebagai administrator) berhasil:

netsh interface set interface name="Bluetooth Network Connection" admin=disabled

Saya sebelumnya telah menggunakan perintah yang sama untuk menonaktifkan adaptor Wi-Fi saya, dan menemukan bahwa perintah tersebut juga berfungsi dengan adaptor lain di: Panel Kontrol > Jaringan dan Internet > Koneksi Jaringan. Ubah saja argumen "name" ke nama adaptor Anda. Anda juga dapat mengaktifkannya lagi dengan mengubah argumen terakhir menjadi admin=enabled.

Komentar (5)