注意,原始碼需要使用者引用: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對象包含諸多選項資訊。
拿手機坐下測試,首先將手機串連電腦,接著開啟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……