Laden...

Pfad zu angeschlossenem Handy ermitteln (USB-Laufwerk? Was sonst, wenn das nicht geht?)

Erstellt von words_sourcecode vor 11 Jahren Letzter Beitrag vor 11 Jahren 5.518 Views
W
words_sourcecode Themenstarter:in
41 Beiträge seit 2009
vor 11 Jahren
Pfad zu angeschlossenem Handy ermitteln (USB-Laufwerk? Was sonst, wenn das nicht geht?)

Hallo liebes Forum,

ich möchte den Pfad zu meinem angeschlossenen Handy rausbekommen, um Dateien darauf zu verwalten.

Folgende einfach Methode, um USB-Sticks zu erkennen, funktioniert nicht, wenn ich ein Handy anschließe:

        private void CheckDrives()
        {
            label1.Text = "";
            foreach (System.IO.DriveInfo d in System.IO.DriveInfo.GetDrives())
            {
                label1.Text += d.Name + " ==> " + d.DriveType.ToString() + "\n";
            }
        }

Das Handy wird einfach nicht erkannt...
Vielen Dank für eure Hilfe!

Bis dann,
Felix

C
2.121 Beiträge seit 2010
vor 11 Jahren

Bisschen seltsame Methode. Keiner sieht was für Variablen sie verwendet. Und der Zähler ist 0 oder 1, was andres kann er nicht sein.
Wenn du das Verzeichnis kennst und angibst, was ist der DriveType beim Handy?

W
words_sourcecode Themenstarter:in
41 Beiträge seit 2009
vor 11 Jahren

@chilic: Hatte aus Versehen die falsche kopiert. Ist jetzt oben editiert.

Nebenbei, meine Laufwerke werden halt als Fixed und meine USB-Sticks als Removable angezeigt. Außer bei meinen Smartphones klappt es nicht (Android).

T
708 Beiträge seit 2008
vor 11 Jahren

Hallo words_sourcecode,

steckst du denn das Android Gerät nur ein? Denn das fragt ja i.d.R. was du machen möchtest:
Nur laden, SD-Karte oder ggf. einer Synch. Software.
Als Removable wird das nur erkann, wenn es sich auch um einen Wechseldatenträger handelt.
Im Falle von "Nur Laden" könnte man per ADB prüfen ob es sich um das Smartphone handelt. Müsste das allerdings pollen.

trib

EDIT: Link eingefügt

W
words_sourcecode Themenstarter:in
41 Beiträge seit 2009
vor 11 Jahren

Danke dir für die Infos.

Habe mit ADB schon bei Emulatoren rumgespielt und jetzt auch mal mit meinen Smartphones. Ist aber leider nicht realisierbar, weil ich die Daten darauf einfach **verwalten **möchte (hatte ich noch nicht erwähnt).

Wenn ich mein SGS2 als Massenspeicher anschließe, was zB bei meinem SGS3 nicht möglich ist, kann ich es ganz normal mit GetDrives() sehen und benutzen.

Aber wenn ein Handy als Gerät und nicht als Wechseldatenträger unter Windows erkannt wird, klappt das nicht.
Gibt es da noch eine andere Variante?

worlds_sourcode

T
708 Beiträge seit 2008
vor 11 Jahren

Geht es beim S3 nicht mehr einzustellen, welche Standard-Aktion beim anschließen eines USB-Kabels ausgeführt werden soll?
Schau mal unter dem Arbeitsplatz -> Eigenschaften -> Gerätemanager
einmal vor dem Anschluss des Telefons und einmal danach. Da sollte sich doch unter dem Menüpunkt "USB-Controller" und vielleicht sogar "Anschlüsse (COM & LPT)" tun. Letzteres macht der Treiber damit ADB arbeiten kann.

Dann könnte man den Ansatz über alle USB-Geräte gehen und nicht nur über die "Removable Devices". Soweit ich das richtig gesehen habe, müsste folgender Code z.B. auch Tastaturen oder Mäuse anzeigen:
c-sharp-usb-detection

W
words_sourcecode Themenstarter:in
41 Beiträge seit 2009
vor 11 Jahren

Bin deinem Link gefolgt und habe folgenden Code implementiert:

        using System.Management;

        bool serviceStarted = false;
        private void startMonitor()
        {
            while (serviceStarted)
            {
                ManagementEventWatcher watcher = new ManagementEventWatcher();

                WqlEventQuery query = new WqlEventQuery("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_LogicalDisk'");

                watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
                watcher.Query = query;
                watcher.Start();
                watcher.WaitForNextEvent();
            }
            System.Threading.Thread.CurrentThread.Abort();
        }

        private void watcher_EventArrived(object obj, EventArrivedEventArgs e)
        {
            var newEvent = e.NewEvent;

            ManagementBaseObject targetInstance = (ManagementBaseObject)newEvent.GetPropertyValue("TargetInstance");

            string drivename = targetInstance.GetPropertyValue("Name").ToString();
            label1.Text += drivename;
        }

Leider wird mein Galaxy S3 damit nicht erkannt.

Im **GeräteManager **wird unter USB-Controller mein Gerät als SAMSUNG Mobile USB Composite Device unter dem Ort Port_#0006.Hub_#0003 erkannt.
Im Windows Explorer halt als GT-I9300.

Bis dann,
worlds_sourcecode