Is there a way to shut down the device by calling a method in c#? And if yes, an example would be nice. Be aware of that i'm asking if it's possible in a windows universal app.
You can NOT shut down the device with a windows universal app.
Related
I have existing windows phone silverlight app that works fine on windows phone 8.0 and 8.1. However on windows 10, my app terminates during suspend event.
It took me a while to understand that problem in that my app takes too much time on main thread during suspending and system terminate it as stop responding.
Using winrt api the solution can be accomplished by this code:
var defferal = SuspendingEventArgs.getDeferral();
await someSavingMethod();
defferal.Complete();
However I simple don't have access for that api, as my app uses only windows phone api (for running on windows phone 8.0)
Is this possible to somehow call this winrt api in my code or maybe fix suspending termination with other way on windows phone 10?
Not possible, you have to use what the 8.0 API offers to accomplish your goal.
I'm working on creating custom Cortana commands. The commands are registered and executed using a Universal Windows Platform Application. (GitHub)
For instance, I've registered the following command
<Command Name="ShutDown">
<ListenFor>Shut down</ListenFor>
<Navigate/>
</Command>
To run this function in a UWP application
static async void ShutDown()
{
var dialog = new MessageDialog("This is where I would shut the computer down.");
await dialog.ShowAsync();
//System.Diagnostics.Process.Start("Shutdown", "-s -t 10");
}
But after setting this up I learned System.Diagnostics.Process isn't supported in UWP.
The custom commands I want to run involve some sort of execution such as launching external programs, running other scripts, or opening websites.
It makes sense that UWP doesn't support them given that it's universal and an XBox or a phone might not be able to do these, but I was hoping there was some alternative or hacky way to accomplish this on a Windows 10 PC.
Is there a way for me to execute Process commands or something else with similar functionality in a UWP application? It seems like even though I can get Cortana to execute my C# code, UWP doesn't support much that would be useful in this situation.
Thanks in advance.
There are - limited - ways to achieve similar behavior.
You could use LaunchUri to trigger other apps which registered for a certain URI-Scheme. This should work for your webbrowser scenario. More details here:
https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.launcher.launchuriasync.aspx
You could trigger another app and get results back from it using LaunchForResults. The called app has to support this. More details here:
https://msdn.microsoft.com/en-us/library/windows/apps/mt269386.aspx
You could trigger App Services provided by another app. The called app has to support this. The app service will be executed in background. ( I think this is pretty cool.) More details here:http://blogs.msdn.com/b/mvpawardprogram/archive/2015/06/11/writing-windows-10-app-services-in-javascript.aspx
This is a little hacky: I'm not sure if this still works but it did work for Windows 8.1: You could create a so called "Brokered Component". This allows you to trigger everything from you app on you machine, but you won't be able to publish a brokered component into the store. This also allowed Process.Start() on Windows 8.1. It only worked for sideloaded apps. I'm not sure if it still works on Windows 10.
More info here: https://msdn.microsoft.com/en-us/library/windows/apps/dn630195.aspx
Summary:
Starting another app is pretty easy as long as the target app registered as app service or registered a protocol handler (Uri scheme).
Starting scripts or other *.exe is impossible if option 4 doesn't work any longer.
With the Windows 10 Anniversary Update (1607) there is an option to enable this scenario on PC. With this API in the Desktop Extension SDK you can launch a fulltrust process that runs at the full user privileges:
https://learn.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher
This way you can light it up on the platforms where it is supported, i.e. PCs running 1607 or above. And your app will still be universal:
if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0))
{
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
}
I am designing some application using Universal app from visual studio, and i would like some code to execute when the program is running on phone or tablet, the phone part is not a problem since i can use '#if WINDOWS_PHONE_APP' but how can I know if the application is on a tablet?
If you want to detect a keyboard, use the KeyboardCapabilities object. Note that starting with Windows 10, phone can also have wireless keyboards attached.
Quick question ... Microsoft removed support for Process class in Metro Apps. How to get Window title of known Process ID?
I literally Google'd the whole internet for answer without success :/
Microsoft has not supported the Process class in Windows Store apps.
Windows Store Apps are not supposed to have that kind of access, unlike desktop apps. Besides, if you have Windows RT and you're running a Metro App that uses the Process class, you're not going to be able to because Windows RT does not run desktop apps.
Sorry to disappoint you, but if you need to do that, create a desktop app (not able to run on Windows RT).
P.S. They're called Windows Store apps now (not Metro) due to a lawsuit.
I'm trying to programmatically call an event to launch an application in Windows Phone 7. How do I go about doing this?
What I'm looking for is how do I schedule this event call? (for example, opening an app in WP7)?
I think you are talking about Tasks. All available tasks can be consulted here: http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks(v=vs.92).aspx
The call app you are talking about is the PhoneCallTask: http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.phonecalltask(v=vs.92).aspx
If you want to call and app, that is, to open an application from the phone, you can't really do it. Please look at: Launching other applications in Windows phone 7 Programatically