2016-03-19 7 views
0

Die Frage ist sehr einfach, ich möchte alle Laufwerke auf meinem PC auflisten.Wie listet man alle Laufwerke auf, sogar Mobiltelefone, die mit Ihrem PC verbunden sind?

Wir alle wissen, wie Antriebe zur Liste mit:

DriveInfo.GetDrives(); 

Directory.GetLogicalDrives(); 

Aber was, wenn ich mein Handy als Laufwerk benötigen aufzulisten, kann ich es auf Explorer sehen, warum also nicht auf dem Ergebnis dieser aufgelistet 2 Methoden?

Ich testete diese Methoden mit 2 Arten von Handys.

  • Android: LG G4 Stylus LTE (intern und SD-Karte, so dass hier Sie haben 2-Laufwerke)
  • Windows phone: Lumia 1020 (kein SDcard)

Noch kein Ergebnis.

Hilfe bitte!

+0

DriveInfo bietet keine Möglichkeit, auf USB Key Inserts zu warten. Werfen Sie einen Blick auf diese http://stackoverflow.com/questions/620144/detecting-usb-drive-insertion-and-removal-using-windows-service-and-c-sharp – Mainak

+0

Danke für Ihren Kommentar, aber es sagt nur Wie erkennt man, wenn ein Gerät verbunden ist, muss ich das Gerät durchsuchen und Dateien in das Gerät bekommen. – Yogurtu

Antwort

0

Diese Handys sind keine Laufwerke, sie sind WPD devices.

Wenn Sie nur diese auflisten möchten, enthält Windows die COM-API dafür.

Here’s a C++ sample.

Es ist möglich, das gleiche ohne C++, C# unter Verwendung von COM-Interop zu tun. Es dauert einige Zeit zu Setup (Sie müssen zwei COM-Typ-Bibliotheken, PortableDeviceApiLib und PortableDeviceTypesLib, und Workaround einige Probleme mit COM-Typ-Bibliothek importieren) und auch die API zu lernen, aber ich habe einmal für einige Client, die Lösung hat gut funktioniert.


Wenn Sie jedoch nicht nur MTP-Geräte benötigen, aber was auch immer Sachen Windows Explorer zeigt unter „Dieser PC“ (kann alles sein, einige Anwendungen von Drittanbietern oder Fahrer ihre eigene Shell-Erweiterungen registrieren Sachen Hinzufügen zu „Dieser PC "), Dann brauchst du eine komplett andere API, aber es ist wieder COM API. Windows bietet IShellFolder interface zum Aufzählen von Zeug.

Hier sind einige article about something similar in C#.