在电脑中激活、获取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模拟器会运行:
另外通过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: