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
:
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:
Créez un nouveau projet ‘WinForms’ ciblant .NET Framework 4.5.
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