2012年5月28日星期一

在电脑中激活、获取Windows Phone和模拟器的信息

在电脑中激活、获取Windows Phone和模拟器的信息

注意,源代码需要用户引用:Microsoft.Smartdevice.Connectivity.dll

 

对于正确安装后的Windows Phone 7的SDK,在DatastoreManager类型中查询的平台和设备应该是这样的。

=== 平台 ===

Windows Phone 7

=== 设备 ===

Windows Phone Device

Windows Phone Emulator - 512 MB

Windows Phone Emulator - 256 MB

 

代码是这样的:

//+ using Microsoft.SmartDevice.Connectivity;

 

var mgr = new DatastoreManager(System.Globalization.CultureInfo.CurrentCulture.LCID);

Console.WriteLine("=== 平台 ===");

foreach (var platform in mgr.GetPlatforms())

{

    Console.WriteLine(platform.Name);

    Console.WriteLine("=== 设备 ===");

    foreach (var device in platform.GetDevices())

        Console.WriteLine(device.Name);

}

 

激活设备可以通过Device.Activate方法,不过前提是已经连接该设备,连接可以通过Connect方法。比如我们想要激活512MB的模拟器,那么代码:

//+ using Microsoft.SmartDevice.Connectivity;

var mgr = new DatastoreManager(System.Globalization.CultureInfo.CurrentCulture.LCID);

foreach (var platform in mgr.GetPlatforms())

{

    foreach (var device in platform.GetDevices())

    {

        try

        {

            //在名称中查找512字样

            if (device.Name.Contains("512"))

            {

                //连接

                device.Connect();

                //激活

                device.Activate();

            }

        }

        catch (Exception e)

        {

            Console.WriteLine(e);

        }

    }

}

 

OK,程序运行后,相应的Windows Phone模拟器会运行:

image

 

另外通过Device.IsEnumator方法可以判断目标设备是否是模拟器。

 

对于获取信息,可以通过Device.GetSystemInfo方法,可以查询任意Device信息,包括模拟器和实际设备。GetSystemInfo返回一个SystemInfo对象包含诸多选项信息。

 

拿我的Lumia 800手机坐下测试,首先将手机连接电脑,接着打开Zune。接着调用Device.Connect连接,然后GetSystemInfo。

 

完整代码:

//+ using Microsoft.SmartDevice.Connectivity;

//+ using System.ComponentModel; 用于快速输出所有属性

 

static void Main(string[] args)

{

    var mgr = new DatastoreManager(System.Globalization.CultureInfo.CurrentCulture.LCID);

    foreach (var platform in mgr.GetPlatforms())

    {

        foreach (var device in platform.GetDevices())

        {

            try

            {

                //需要Windows Phone Device这个设备,它代表连接的实际设备

                if (device.Name.Contains("Device"))

                {

                    //连接

                    device.Connect();

                    //激活

                    device.Activate();

                    //输出信息

                    PrintProperties(device.GetSystemInfo());

                }

            }

            catch (Exception e)

            {

                Console.WriteLine(e);

            }

        }

    }

}

 

//快速输出所有属性

static void PrintProperties(object obj)

{

    foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))

    {

        string name = descriptor.Name;

        object value = descriptor.GetValue(obj);

        Console.WriteLine("{0}: {1}", name, value);

    }

}

 

OK,结果会输出:

OSMajor: 7

OSMinor: 10

OSBuildNo: 8107

ProcessorArchitecture: Arm

InstructionSet: Armv4ifp

NumberOfProcessors: 1

……

 

诸多信息呵呵,比如操作系统版本:7.10.8107,处理器类型:ARM,指令集:Armv4ifp……


TAG: