Est-il possible d’utiliser un ‘DeviceWatcher’ dans un WinForms?

J’essayais de trouver le moyen le plus efficace et peut-être implémenté dans .NET Framework Classes de surveiller les lecteurs, en fait je sais comment faire cette invocation / utilisation, en utilisant des structures, etc. mais c’est beaucoup de code et je voulais améliorer il.

J’ai donc trouvé cette classe intéressante, DeviceWatcher , qui ne semble pouvoir fonctionner que pour les applications Metro?

Je ne peux pas trouver beaucoup d’informations sur cette classe et je voudrais savoir si d’un Winforms référençant peut-être la dll nécessaire, je pourrais donner à cette classe l’utilisation dans un Winforms?

Oui, c’est possible, à condition que vous utilisiez Windows 8 / Win Server 2012.

Scott Hanselman a écrit un bon article sur la façon d’appeler les méthodes WinRT à partir d’une application de bureau.

En voici les bases: ajoutez les éléments suivants à votre fichier de projet (déchargez-le, modifiez-le, rechargez-le):

 8.0  

Ajoutez ensuite une référence à C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\System.Runtime.InteropServices.WindowsRuntime.dll

Vous devez également append des références à Windows.Devices et à Windows.Foundation via la boîte de dialog Ajouter une référence sous l’onglet Windows :

entrez la description de l'image ici

Une fois que vous avez fait cela, vous pouvez instancier Watcher et append des gestionnaires d’événements:

 DeviceWatcher dw = Windows.Devices.Enumeration.DeviceInformation.CreateWatcher(); dw.Added += dw_Added; dw.Removed += dw_Removed; dw.Start(); 

Donc, fondamentalement, voici les étapes appropriées:

  1. Créez un nouveau projet ‘WinForms’ ciblant .NET Framework 4.5.

  2. Fermez VisualStudio, ouvrez le fichier ” YourProjectName.vbproj ” dans un éditeur de texte et ajoutez cette propriété:

  ... 8.0 ...  

3.Chargez le projet dans VisualStudio, ouvrez le menu “Références” et ajoutez les références suivantes:

C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework.NETFramework \ v4.5 \ Facades \ System.Runtime.dll

C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework.NETFramework \ v4.5 \ Façades \ System.Runtime.InteropServices.WindowsRuntime.dll

4.Dans le menu “Références”, sélectionnez l’onglet ” Windows> Cœur ” et ajoutez les références suivantes:

Windows.Devices

Windows.Fondation


Maintenant, vous pourrez effectuer ceci:

 Public Class DeviceWatcher_Test Private WithEvents dw As DeviceWatcher = DeviceInformation.CreateWatcher() Private Sub Test() Handles MyBase.Load dw.Start() End Sub Private Sub dw_Added(ByVal sender As DeviceWatcher, ByVal e As DeviceInformation) _ Handles dw.Added Debug.WriteLine("dw_added: " & e.Id & " | " & e.Name) End Sub Private Sub dw_Removed(ByVal sender As DeviceWatcher, ByVal e As DeviceInformationUpdate) _ Handles dw.Removed Debug.WriteLine("dw_Removed: " & e.Id) End Sub Private Sub dw_Updated(ByVal sender As DeviceWatcher, ByVal e As DeviceInformationUpdate) _ Handles dw.Updated Debug.WriteLine("dw_Updated: " & e.Id) End Sub Private Sub dw_Stopped(ByVal sender As DeviceWatcher, ByVal e As Object) _ Handles dw.Stopped Debug.WriteLine("dw_Stopped: " & e.ToSsortingng) End Sub Private Sub dw_EnumerationCompleted(ByVal sender As DeviceWatcher, ByVal e As Object) _ Handles dw.EnumerationCompleted Debug.WriteLine("dw_EnumerationCompleted: " & e.ToSsortingng) End Sub End Class