Microsoft.Smartdevice.Connectivity and Windows Phone 8, launching native applications, sending input?

I wrote a small .NET Console program that will run the Windows 8 simulator. Very simple:

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 + "}."); 

Pretty simple. However, what I want to do now is software interaction with the device. I know that I can run my own applications using iDevice.installApplication, but I really want to run the built-in application that comes with the simulator (mail application). Can I use the SmartDevice.Connectivity libraries to send strokes or launch hidden applications that do not appear in the GetInstalledApplications() method? The API is rare and it doesn't seem like a ton of developers are using this.

+7
windows-phone-8
source share
1 answer

I really found a better structure than the SmartDevice structure. Inside the C:\Program Files (x86)\Microsoft XDE\8.0 folder, you can find Microsoft.XDE DLLs that help connect the Windows 8 / skin simulator shell and managed libraries that allow you to interact with the simulator. Code example:

 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(); } 
+1
source share

All Articles