Forum: PC-Programmierung c# Geräte anzeigen


von Karl K. (leluno)


Lesenswert?

hallo,

               DriveInfo[] allDrives = DriveInfo.GetDrives();

zeigt u.a. USB-Sticks an, aber nicht den Speicher meines Smartphones, 
der als "Gerät" per usb an den pc angeschlossen und im explorer sichtbar 
ist.

Wie greife ich über den PC auf den Speicher des Smartphones zu?

danke für Unterstützung

von Εrnst B. (ernst)


Lesenswert?

Karl K. schrieb:
> Wie greife ich über den PC auf den Speicher des Smartphones zu?

Früher™ konnte Android noch den MSD-Modus am USB-Port. Der wäre in 
deiner Auflistung drinnen gewesen.
Heute macht man eher MTP, damit die Apps am Handy weiterlaufen können, 
während der PC auf die Daten zugreift.

https://de.wikipedia.org/wiki/Media_Transfer_Protocol

von Karl K. (leluno)


Lesenswert?

"Windows.Devices.Enumeration Namespace

Stellt Klassen zum Aufzählen von Geräten bereit."

Das müsste es sein. Wie füge ich den Projektverweis hinzu???

von C-hater (c-hater)


Lesenswert?

Karl K. schrieb:

>                DriveInfo[] allDrives = DriveInfo.GetDrives();
>
> zeigt u.a. USB-Sticks an, aber nicht den Speicher meines Smartphones,
> der als "Gerät" per usb an den pc angeschlossen und im explorer sichtbar
> ist.
>
> Wie greife ich über den PC auf den Speicher des Smartphones zu?

Das geht so nicht. MTP (media transfer protocol)-Devices werden unter 
Windows nicht als normale Laufwerke verwaltet. Die erscheinen nur im im 
Explorer in etwa so, als wären es welche.

Dementsprechend gibt es im Shell-API die entsprechende Unterstützung 
dafür. Dabei handelt es sich allerdings um native COM-Objekte. Ob es 
einen .Net-Wrapper dafür gibt, das weiß ich leider nicht. Ich vermute 
allerdings stark: wird es geben...

von Bernd H. (geeky)


Lesenswert?

https://github.com/Bassman2/MediaDevices hab ich da schonmal verwendet.
(ist auch als nuget-Paket einbindbar)

von Karl K. (leluno)


Lesenswert?

der word-macro-aufzeichner ergibt für den Pfad
"Dieser PC\KINGKONG MINI2\SD-Karte\kmv\":
1
Sub Makro68()
2
'
3
' Makro68 Makro
4
'
5
'
6
    Documents.Open FileName:= _
7
        "C:\Users\karl\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\9360BC6C.tmp" _
8
        , ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
9
        PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
10
        WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
11
        wdOpenFormatAuto, XMLTransform:="", Encoding:=1252
12
    Selection.EscapeKey
13
    Selection.EscapeKey
14
'    ActiveWindow.Close
15
End Sub

in c# umgesetzt
1
string dir = @"C:\Users\karl\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\";
2
            if (Directory.Exists(dir))
3
            {
4
                string[] files = Directory.GetFiles(dir);
5
                foreach (var file in files)
6
                {
7
                    FileInfo info = new FileInfo(file);
8
                    listBox2.Items.Add(info.Name);
9
                }
10
            }


Damit bekomme ich Dateien wie folgt angezeigt:

C:\Users\karl\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\3D70 
D199.dat

Hat vielleicht och jemand eine Idee hierzu? Was ist INetCache?

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Karl K. schrieb:
> Hat vielleicht och jemand eine Idee hierzu? Was ist INetCache?

Dateien, die per MTP auf dem Handy erreichbar sind, sind keine "echten" 
Dateien am PC. Normale Anwendungen können die nicht öffnen. Darum werden 
die auf einen temporären Ort umkopiert, dann kriegt die Applikation die 
Kopie zum damit Arbeiten, und ggfs. wird die Datei beim Beenden der 
Applikation wieder zurück auf Handy geschoben.

Wo dieser temporäre Pfad genau liegt, ist ein Implementationsdetail, auf 
das du dich nicht verlassen solltest: Geh den offiziellen Weg.

von Karl K. (leluno)


Lesenswert?

Danke für die konstruktiven Beiträge.

Lösungsweg:
how-to-manage-files-on-an-mtp-portable-device

Man braucht eine Erweiterung:
https://www.nuget.org/packages/MediaDevices/

muss diese in die packet-manager-console laden - und dann geht es.

Mein Problem war die Installation der Erweiterung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.