IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Activer / désactiver le Bluetooth d'un poste Windows avec du code Csharp


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Activer / désactiver le Bluetooth d'un poste Windows avec du code Csharp
    Bonjour à tous,

    Pour une application Xaml Windows, je souhaite permettre à l'utilisateur d'activer le Bluetooth de son PC sans qu'il soit obligé de passer par les paramètres Windows.
    Un simple bouton pour activer le Bluetooth s'il n'est pas actif.

    Je pensais trouver rapidement la solution sur le web et bien non

    Pouvez-vous m'aider ?

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 741
    Points : 5 430
    Points
    5 430
    Par défaut
    Il existe des API Windows pour le faire.

    Ce lien contient la page des API Windows liée au Bluetooth :
    https://learn.microsoft.com/fr-fr/wi...ectedfrom=MSDN

    Ce lien contient la documentation sur l'API BluetoothSetServiceState qui est celle qui correspond à ton besoin :
    https://learn.microsoft.com/fr-fr/wi...etservicestate

    Ce code montre comment activer ou désactiver le Bluetooth avec BluetoothSetServiceState en tenant compte du fait que
    • BLUETOOTH_SERVICE_DISABLE = 0
    • BLUETOOTH_SERVICE_ENABLE = 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BluetoothSetServiceState(pointer.Handle, ref deviceInfo, ref serviceRef, 0);
    BluetoothSetServiceState(pointer.Handle, ref deviceInfo, ref serviceRef, 1);
    Ce lien contient un exemple de code utilisant BluetoothSetServiceState :
    https://stackoverflow.com/questions/...ice-on-windows

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par popo Voir le message
    Il existe des API Windows pour le faire.

    Ce lien contient la page des API Windows liée au Bluetooth :
    https://learn.microsoft.com/fr-fr/wi...ectedfrom=MSDN

    Ce lien contient la documentation sur l'API BluetoothSetServiceState qui est celle qui correspond à ton besoin :
    https://learn.microsoft.com/fr-fr/wi...etservicestate

    Ce code montre comment activer ou désactiver le Bluetooth avec BluetoothSetServiceState en tenant compte du fait que
    • BLUETOOTH_SERVICE_DISABLE = 0
    • BLUETOOTH_SERVICE_ENABLE = 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BluetoothSetServiceState(pointer.Handle, ref deviceInfo, ref serviceRef, 0);
    BluetoothSetServiceState(pointer.Handle, ref deviceInfo, ref serviceRef, 1);
    Ce lien contient un exemple de code utilisant BluetoothSetServiceState :
    https://stackoverflow.com/questions/...ice-on-windows
    Merci beaucoup.
    J'ai pourtant cherché un bout de temps, je tombais toujours sur les mêmes pages, à côté de mon problème.
    Je teste ça et je reviens passer en résolu ou bien relancer le sujet.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Re bonjour,
    Je reviens aujourd'hui sur le sujet.
    En voulant faire un poc le plus simple possible (une Windows Form avec un bouton), je bloque très vite.
    La structure BLUETOOTH_DEVICE_INFO nécessite un en-tête bluetoothapis.h que je ne sais pas implémenter en C#.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    using System.Runtime.InteropServices;
     
    namespace WinFormsApp1
    {
        internal static class Program
        {
            private const string bluetoothDll = "bthprops.cpl";
            /// <summary>
            ///  The main entry point for the application.
            /// </summary>
            [STAThread]
            [DllImport(bluetoothDll, ExactSpelling = true, SetLastError = true)]
            private static extern uint BluetoothSetServiceState(IntPtr hRadio, ref BLUETOOTH_DEVICE_INFO pbtdi, ref Guid pGuidService, uint dwServiceFlags);
     
            static void Main()
            {
     
                // To customize application configuration such as set high DPI settings or default font,
                // see https://aka.ms/applicationconfiguration.
                ApplicationConfiguration.Initialize();
                Application.Run(new Form1());
            }
        }
    }

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 741
    Points : 5 430
    Points
    5 430
    Par défaut
    Il suffit de suivre le lien fourni dans la doc.
    https://learn.microsoft.com/fr-fr/wi...ce_info_struct

    On peut alors constater qu'il s'agit d'une structure.
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct _BLUETOOTH_DEVICE_INFO {
      DWORD             dwSize;
      BLUETOOTH_ADDRESS Address;
      ULONG             ulClassofDevice;
      BOOL              fConnected;
      BOOL              fRemembered;
      BOOL              fAuthenticated;
      SYSTEMTIME        stLastSeen;
      SYSTEMTIME        stLastUsed;
      WCHAR             szName[BLUETOOTH_MAX_NAME_SIZE];
    } BLUETOOTH_DEVICE_INFO_STRUCT;

    Cette structure, il faut que tu la traduise en C#.
    Quelque chose comme :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    unsafe struct BLUETOOTH_DEVICE_INFO
    {
        public int dwSize;
        public BLUETOOTH_ADDRESS Address;
        public uint ulClassofDevice;
        public bool fConnected;   
        public bool fRemembered;  
        public bool fAuthenticated; 
        public SYSTEMTIME stLastSeen; 
        public SYSTEMTIME stLastUsed; 
     
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = BLUETOOTH_MAX_NAME_SIZE)]
        public string szName;
    }

    Il faudra bien évidemment suivre d'autres liens pour BLUETOOTH_ADDRESS, SYSTEMTIME et BLUETOOTH_MAX_NAME_SIZE.
    Ces liens sont tous fournis dans le menu à gauche de la documentation.
    https://learn.microsoft.com/fr-fr/wi...ase-systemtime
    https://learn.microsoft.com/fr-fr/wi...address_struct

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Merci pour votre aide, oui j'en étais là quand j'ai répondu.
    J'avais implémenté la structure en commentant tout ce qui ne passait pas à la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    [StructLayout(LayoutKind.Sequential)]
    public struct BLUETOOTH_DEVICE_INFO
    {
        public uint dwSize;
        public ulong Address;
        public uint ulClassofDevice;
        public bool fConnected;
        public bool fRemembered;
        public bool fAuthenticated;
        //public SYSTEMTIME stLastSeen;
        //public SYSTEMTIME stLastUsed;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 248)]
        public string szName;
        public uint ulFlags;
    }
     
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
     
     
            //private static extern uint BluetoothSetServiceState(IntPtr hRadio, ref BLUETOOTH_DEVICE_INFO pbtdi, ref Guid pGuidService, uint dwServiceFlags);
     
     
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                test();
            }
     
            private void test()
            {
                // [DllImport(bluetoothDll, ExactSpelling = true, SetLastError = true)] ;
                //[DllImport("bthprops.cpl"]
                //process.start("control", "bthprops.cpl");
                SetBluetooth(false);
            }
            [DllImport("Irprops.cpl", CharSet = CharSet.Auto, SetLastError = true)]
            static extern int BluetoothSetServiceState(IntPtr handle, ref BLUETOOTH_DEVICE_INFO deviceInfo, ref Guid guidService, uint serviceFlags);
     
            public static void SetBluetooth(bool enable)
            {
                BLUETOOTH_DEVICE_INFO deviceInfo = new BLUETOOTH_DEVICE_INFO();
                //deviceInfo.dwSize = Marshal.SizeOf(deviceInfo);
                //deviceInfo.Address = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
                //deviceInfo.ulClassofDevice = 0x200404;
                //deviceInfo.fConnected = false;
                //deviceInfo.fRemembered = false;
                //deviceInfo.fAuthenticated = false;
                //deviceInfo.szName = new byte[248];
                deviceInfo.ulFlags = 0;
     
                Guid serviceClass = new Guid(0x00001101, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
                uint serviceFlags = enable ? 1u : 0u;
     
                BluetoothSetServiceState(IntPtr.Zero, ref deviceInfo, ref serviceClass, serviceFlags);
            }
     
        }
    }
    Mais ce que je crois comprendre, c'est que BluetoothSetServiceState a pour objet de désactiver les périphériques Bluetooth connectés.
    Ce que je cherche à faire, c'est juste activer le Bluetooth du PC s'il n'est pas actif :
    Nom : bluetooth.png
Affichages : 171
Taille : 9,3 Ko

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 741
    Points : 5 430
    Points
    5 430
    Par défaut
    Citation Envoyé par fplanglois Voir le message
    Mais ce que je crois comprendre, c'est que BluetoothSetServiceState a pour objet de désactiver les périphériques Bluetooth connectés.
    Ce que je cherche à faire, c'est juste activer le Bluetooth du PC s'il n'est pas actif
    Ah, j'avais pas compris.
    Dans ce cas, je ne suis pas certain mais je crois qu'il faut utiliser BluetoothEnableDiscovery.
    En passant null sur le Handle et True sur le deuxième paramètre, ça devrait activer toutes les découvertes Bluetooth locales (donc celle de ton PC si tu l'utilise sur ton PC)
    https://learn.microsoft.com/fr-fr/wi...nablediscovery

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 288
    Points : 1 882
    Points
    1 882
    Par défaut
    En cherchant un peu, je suis tombé sur ça https://learn.microsoft.com/en-us/uw...devices.radios
    J'ai testé en Windows Forms (.NET7): un texbox en multiligne, un bouton; l'appui du bouton liste les Radios disponibles et si il y a le bluetooth on change son état (ON=> OFF, OFF => ON)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    using Windows.Devices.Radios;
    [...]
    private async void button3_Click(object sender, EventArgs e)
    {
        textBox1.Text = "";
        var bt = await Radio.GetRadiosAsync();
        foreach(Radio r in bt)
        {
            textBox1.AppendText($"{r.Name} ({r.Kind.ToString()}) status: {r.State.ToString()}{Environment.NewLine}");
            if (r.Kind == RadioKind.Bluetooth)
            {
                await Radio.RequestAccessAsync();
                var test = await r.SetStateAsync(r.State==RadioState.On?RadioState.Off:RadioState.On);
                textBox1.AppendText("Toggle Bluetooth" + Environment.NewLine);
                textBox1.AppendText($"{r.Name} ({r.Kind.ToString()}) status: {r.State.ToString()}{Environment.NewLine}");
            }
        }
    }
    Pour info, je suis passé par une étape d'installation du package https://www.nuget.org/packages/Micro....SDK.Contracts mais j'ai du le désinstaller ensuite (j'ai eu cette erreur traitée sur ce sujet SO https://stackoverflow.com/a/70380286 )
    Ensuite, plus d'erreur.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    J'ai donc essayé.
    Ca compile sans erreur, mais ça ne fait rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    using System.Diagnostics;
    //using Windows.Devices.Enumeration;
    //using Windows.Devices.PointOfService;
    using Windows.Devices.Enumeration;
    using Windows.Devices.PointOfService;
    using System.Runtime.InteropServices;
    using static System.ComponentModel.Design.ObjectSelectorEditor;
    [StructLayout(LayoutKind.Sequential)]
     
    public struct BLUETOOTH_DEVICE_INFO
    {
        public uint dwSize;
        public ulong Address;
        public uint ulClassofDevice;
        public bool fConnected;
        public bool fRemembered;
        public bool fAuthenticated;
        //public SYSTEMTIME stLastSeen;
        //public SYSTEMTIME stLastUsed;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 248)]
        public string szName;
        public uint ulFlags;
    }
     
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
     
     
            //private static extern uint BluetoothSetServiceState(IntPtr hRadio, ref BLUETOOTH_DEVICE_INFO pbtdi, ref Guid pGuidService, uint dwServiceFlags);
     
     
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                test();
            }
     
            private void test()
            {
     
                SetBluetooth(true);
            }
     
     
            //[DllImport("Irprops.cpl", CharSet = CharSet.Auto, SetLastError = true)]
            //static extern int BluetoothSetServiceState(IntPtr handle, ref BLUETOOTH_DEVICE_INFO deviceInfo, ref Guid guidService, uint serviceFlags);
            [DllImport("Irprops.cpl", CharSet = CharSet.Auto, SetLastError = true)]
            static extern int BluetoothEnableDiscovery(IntPtr handle, bool bascule);
            public static void SetBluetooth(bool enable)
            {
                //BLUETOOTH_DEVICE_INFO deviceInfo = new BLUETOOTH_DEVICE_INFO();
                //deviceInfo.dwSize = Convert.ToUInt32(Marshal.SizeOf(deviceInfo));
                //deviceInfo.Address = 0;//new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
                //deviceInfo.ulClassofDevice = 0x200404;
                //deviceInfo.fConnected = false;
                //deviceInfo.fRemembered = false;
                //deviceInfo.fAuthenticated = false;
                //deviceInfo.szName = "toto";// new byte[248];
                //deviceInfo.ulFlags = 0;
     
                //Guid serviceClass = new Guid(0x00001101, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
                //uint serviceFlags = enable ? 1u : 0u;
     
                //BluetoothSetServiceState(IntPtr.Zero, ref deviceInfo, ref serviceClass, serviceFlags);
                BluetoothEnableDiscovery(IntPtr.Zero, enable);
            }
     
        }
    }

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par umfred Voir le message
    En cherchant un peu, je suis tombé sur ça https://learn.microsoft.com/en-us/uw...devices.radios
    J'ai testé en Windows Forms (.NET7): un texbox en multiligne, un bouton; l'appui du bouton liste les Radios disponibles et si il y a le bluetooth on change son état (ON=> OFF, OFF => ON)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    using Windows.Devices.Radios;
    [...]
    private async void button3_Click(object sender, EventArgs e)
    {
        textBox1.Text = "";
        var bt = await Radio.GetRadiosAsync();
        foreach(Radio r in bt)
        {
            textBox1.AppendText($"{r.Name} ({r.Kind.ToString()}) status: {r.State.ToString()}{Environment.NewLine}");
            if (r.Kind == RadioKind.Bluetooth)
            {
                await Radio.RequestAccessAsync();
                var test = await r.SetStateAsync(r.State==RadioState.On?RadioState.Off:RadioState.On);
                textBox1.AppendText("Toggle Bluetooth" + Environment.NewLine);
                textBox1.AppendText($"{r.Name} ({r.Kind.ToString()}) status: {r.State.ToString()}{Environment.NewLine}");
            }
        }
    }
    Pour info, je suis passé par une étape d'installation du package https://www.nuget.org/packages/Micro....SDK.Contracts mais j'ai du le désinstaller ensuite (j'ai eu cette erreur traitée sur ce sujet SO https://stackoverflow.com/a/70380286 )
    Ensuite, plus d'erreur.
    Bonjour et merci.
    J'ai posté mon dernier message avant de voir votre réponse.
    Je teste de suite !

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Merci mille fois.
    Ca fonctionne !!!

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Reste un problème. Pour que cette solution fonctionne, il faut la concevoir sur une infrastructure .DOT récente (j'ai fait mon test en Windows Forms .NET 8.0).

    Sur mon projet initial en WPF, donc SDK 4.8 max, ça n'est pas possible, ni sur un Windows Form .NET Framework.
    Dans ces deux cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using Windows.Devices.Radios;
    n'existe pas.

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 288
    Points : 1 882
    Points
    1 882
    Par défaut
    Je viens de tester en WPF Framework 4.8, il faut installer le package Microsoft.Windows.SDK.Contracts dont j'ai parlé.

    Et il faut indiquer dans les options de build le type de plateforme ciblé (x64 ou x32); ça ne fonctionnera que si compilé dans la même architecture.
    ou décocher la case "Préférer 32 bits" en laissant la cible sur "Any CPU"

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par umfred Voir le message
    Je viens de tester en WPF Framework 4.8, il faut installer le package Microsoft.Windows.SDK.Contracts dont j'ai parlé.

    Et il faut indiquer dans les options de build le type de plateforme ciblé (x64 ou x32); ça ne fonctionnera que si compilé dans la même architecture.
    ou décocher la case "Préférer 32 bits" en laissant la cible sur "Any CPU"
    J'ai fait selon vos indications, j'ai toujours la non reconnaissance de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using Windows.Devices.Radios;
    Gravité Code Description Projet Fichier Ligne État de la suppression
    Erreur CS0234 Le nom de type ou d'espace de noms 'Devices' n'existe pas dans l'espace de noms 'Windows' (vous manque-t-il une référence d'assembly*?) WpfApp1 C:\Users\frup79126\OneDrive - GFI\Documents\DEV\tests\WpfApp1\WpfApp1\MainWindow.xaml.cs 15 Actif


    Concernant l'installation du package avec Nuget, voici une copie d'écran. Ai-je pu oublier une étape ?
    Nom : nuget.png
Affichages : 140
Taille : 79,9 Ko

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 288
    Points : 1 882
    Points
    1 882
    Par défaut
    étrange, le package n'apparait pas la liste des références (arborescence à droite), ce qui explique la non reconnaissance.
    Regarde si tu peux la rajouter manuellement.
    Edit: tu as essayé de générer/lancer le debug du ton projet pour voir ?

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par umfred Voir le message
    étrange, le package n'apparait pas la liste des références (arborescence à droite), ce qui explique la non reconnaissance.
    Regarde si tu peux la rajouter manuellement.
    Edit: tu as essayé de générer/lancer le debug du ton projet pour voir ?
    Il y avait cette option :
    Nom : package reference.png
Affichages : 136
Taille : 19,1 Ko
    Qui ajoute le package dans les références.

    Maintenant tout se compile bien, mais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var bt = await Radio.GetRadiosAsync();
    Dans le cas du projet en Windows Forms qui fonctionne, la liste bt contient 3 occurences : sous debugger bt.Count = 3
    alors que dans le projet WPF, bt ne contient rien : bt.Count=0 et donc la liste n'affiche rien.

  17. #17
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 288
    Points : 1 882
    Points
    1 882
    Par défaut
    c'est en lien avec la 2nde partie de ma réponse initiale:
    Citation Envoyé par umfred Voir le message
    Et il faut indiquer dans les options de build le type de plateforme ciblé (x64 ou x32); ça ne fonctionnera que si compilé dans la même architecture.
    ou décocher la case "Préférer 32 bits" en laissant la cible sur "Any CPU"

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par umfred Voir le message
    c'est en lien avec la 2nde partie de ma réponse initiale:
    Désolé, dans un premier temps j'avais bien modifié les options du Build comme indiqué. Puis au moment du pb d'installation du package, j'étais reparti sur un projet vierge (et donc oublié de le refaire).

    Et donc maintenant, tout fonctionne comme voulu.

    Vraiment, merci infiniment de m'avoir suivi jusqu'au bout.

  19. #19
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 288
    Points : 1 882
    Points
    1 882
    Par défaut
    Tu pourrais peut-être retesté le code du post #9 (le BluetoothEnableDiscovery) en modifiant là aussi le ciblage. c'était peut-être également ça le souci.

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par umfred Voir le message
    Tu pourrais peut-être retesté le code du post #9 (le BluetoothEnableDiscovery) en modifiant là aussi le ciblage. c'était peut-être également ça le souci.
    Je viens d'essayer, ça ne change rien.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2011, 19h30
  2. Récupérer le logon post-Windows 2000 dans l'active directory
    Par Tuizi dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 11/09/2007, 11h50
  3. Réponses: 10
    Dernier message: 30/12/2005, 20h08
  4. surveillance de mon poste windows
    Par zetta dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 28/11/2005, 17h03
  5. Activer le paver numérique au démarrage de Windows
    Par Furius dans le forum Windows XP
    Réponses: 17
    Dernier message: 19/10/2005, 07h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo