Microsoft.Smartdevice.Подключение и Windows Phone 8, запуск собственных приложений,отправка ввода?
Я написал небольшую консольную программу .NET, которая запустит симулятор Windows 8. Очень просто:
using Microsoft.SmartDevice.Connectivity;
using Microsoft.SmartDevice.Connectivity.Interface;
using Microsoft.SmartDevice.MultiTargeting.Connectivity;
MultiTargetingConnectivity connectivity = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID);
var devices = connectivity.GetConnectableDevices();
ConnectableDevice connectableDevice = devices[2];
Console.WriteLine("Found Connectable Device '" + connectableDevice.Name + "' for Device id {" + connectableDevice.Id + "}.");
довольно проста. Однако теперь я хочу программно взаимодействовать с устройством. Я знаю, что могу запускать свои собственные приложения с помощью iDevice.installApplication но то, что я действительно хочу сделать, это запустить встроенное приложение, которое поставляется с симулятором (почтовое приложение). Могу ли я использовать SmartDevice.Connectivity
libs для отправки касаний или запуска "скрытых" приложений, которые не отображаются в GetInstalledApplications()
способ? API разрежен, и не похоже, что тонна разработчиков использует это.
1 ответов
Я действительно нашел лучшую структуру, чем SmartDevice
основы. Внутри C:\Program Files (x86)\Microsoft XDE.0
папка вы можете найти Microsoft.XDE
DLL, которые помогают питать оболочку/скин симулятора Windows 8 и являются управляемыми библиотеками, которые позволяют взаимодействовать с симулятором. Пример кода:
private static void BootViaXdeLibs()
{
var factory = new Microsoft.Xde.Wmi.XdeWmiFactory();
Console.WriteLine("Polling for virtual machines");
var virtualMachine = factory.GetAllXdeVirtualMachines(SettingsOptions.None)[2];
Console.WriteLine("Found machine {0}", virtualMachine.Name);
if (virtualMachine.EnabledState != VirtualMachineEnabledState.Disabled)
{
Console.WriteLine("Virtual Machine {0} is already running. Shutting down. ", virtualMachine.Name);
virtualMachine.Stop();
while (virtualMachine.EnabledState != VirtualMachineEnabledState.Disabled)
{
Thread.Sleep(1000);
}
}
Console.WriteLine("Starting {0}", virtualMachine.Name);
virtualMachine.Start();
while (virtualMachine.EnabledState == VirtualMachineEnabledState.Starting)
{
Thread.Sleep(1000);
}
Console.WriteLine("Sleeping before image capture to give boot time");
Thread.Sleep(30000);
//Click on the screen
virtualMachine.SendMouseEvent(new MouseEventArgs(MouseButtons.Left, 1, 295, 260, 0));
Thread.Sleep(100);
virtualMachine.SendMouseEvent(new MouseEventArgs(MouseButtons.None, 0, 295, 260, 0));
Thread.Sleep(1000);
Console.WriteLine("Saving screenshot");
//Capture Screen
var res = virtualMachine.GetCurrentResolution();
var image = virtualMachine.GetScreenShot(0, 0, res.Width, res.Height);
image.Save("C:\image.png", ImageFormat.Png);
virtualMachine.Stop();
}