使用 C# 访问 phone 文件夹和 read/write

Using C# to access phone folders and read/write

抱歉,如果有人只是对答案发布 link,但我真的很难 google 这个。

我不知道如何在手机插入时检测手机,然后访问其存储空间。前者只是我不知道从哪里开始寻找的东西,而第二个让我有点困惑,因为我习惯于使用驱动器号访问存储。我用过的手机(iPhone 4S 和一些不同的 Samsung galaxy 和 notes)没有盘符。那么我该从哪里开始呢?

我使用 C#,但我对 dllimports 等很满意

我现在已经从我在上面的评论中链接的线程中完成了这段代码,很好并且很容易投入到程序中。

using System;
using System.Management;
using System.Threading;

namespace USBDeviceTester
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread myThread = new Thread(new ThreadStart(ThreadWorker));
            myThread.Start();
        }

        public static void ThreadWorker()
        {
            WqlEventQuery insertQuery = new WqlEventQuery("SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_USBHub'");

            ManagementEventWatcher insertWatcher = new ManagementEventWatcher(insertQuery);
            insertWatcher.EventArrived += new EventArrivedEventHandler(DeviceInsertedEvent);
            insertWatcher.Start();

            WqlEventQuery removeQuery = new WqlEventQuery("SELECT * FROM __InstanceDeletionEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_USBHub'");
            ManagementEventWatcher removeWatcher = new ManagementEventWatcher(removeQuery);
            removeWatcher.EventArrived += new EventArrivedEventHandler(DeviceRemovedEvent);
            removeWatcher.Start();

            // Do something while waiting for events
            System.Threading.Thread.Sleep(20000000);
        }

        private static void DeviceInsertedEvent(object sender, EventArrivedEventArgs e)
        {
            Console.WriteLine("");
            Console.WriteLine(" --- DEVICE INSERTED ---");
            Console.WriteLine("");
            ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
            foreach (var property in instance.Properties)
            {
                Console.WriteLine(property.Name + " = " + property.Value);
            }
            Console.WriteLine("");
        }

        static void DeviceRemovedEvent(object sender, EventArrivedEventArgs e)
        {
            Console.WriteLine("");
            Console.WriteLine(" --- DEVICE REMOVED ---");
            Console.WriteLine("");
            //ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
            //foreach (var property in instance.Properties)
            //{
            //  Console.WriteLine(property.Name + " = " + property.Value);
            //}
        }
    }
}

其中returns信息是这样的:

 --- DEVICE REMOVED ---


 --- DEVICE INSERTED ---

Availability = 
Caption = Apple Mobile Device USB Driver
ClassCode = 
ConfigManagerErrorCode = 0
ConfigManagerUserConfig = False
CreationClassName = Win32_USBHub
CurrentAlternateSettings = 
CurrentConfigValue = 
Description = Apple Mobile Device USB Driver
DeviceID = USB\VID_05AC&PID_12A0ABFD2ED02E3982B5F4455FD684716A6D4958A74
ErrorCleared = 
ErrorDescription = 
GangSwitched = 
InstallDate = 
LastErrorCode = 
Name = Apple Mobile Device USB Driver
NumberOfConfigs = 
NumberOfPorts = 
PNPDeviceID = USB\VID_05AC&PID_12A0ABFD2ED02E3982B5F4455FD684716A6D4958A74
PowerManagementCapabilities = 
PowerManagementSupported = 
ProtocolCode = 
Status = OK
StatusInfo = 
SubclassCode = 
SystemCreationClassName = Win32_ComputerSystem
SystemName = MyComputerName
USBVersion =