博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UWP 调用Win32 关机
阅读量:6853 次
发布时间:2019-06-26

本文共 1489 字,大约阅读时间需要 4 分钟。

原文:

话说最近程序需要个晚上自动关机的功能

原则上 uwp 应该是没有关机权限的

上网搜索之

有人说只要这样就可以了

var psi = new ProcessStartInfo("shutdown", "/s /t 0");psi.CreateNoWindow = true;psi.UseShellExecute = false;Process.Start(psi);

但是使用这个必须要用 Brokered UWP Component Project Templates:

这个 Templates 是 vs2015 的

 

不过我的是 vs2017

而且代码已经很多了,从头开始肯定不行

但是在 VS2017 下,现在可以直接调用 Win32 程序

在这里就可以调用 Win32 来进行关机

 

首先随便写个关机的程序

比如我们直接开个控制台程序,写上:

static void Main(string[] args)        {            Process.Start("shutdown.exe", "-s -f -t 100");        }

设置程序开启后100秒关机 (话说设置100秒主要为了调试方便,只要运行 shutdown –a 就可以取消关机任务)

编译后生成 ConsoleShutdown1.exe

我们把文件拷贝到uwp的目录下面

我单独建了个文件夹,把exe文件包含到项目中:

 

然后我们添加引用 “ Windows Desktop Extensions For The UWP ”,添加那个版本看自己的项目需要了,我项目的目标版本直接就是1709,所以直接引用最新版的扩展。

(注意要在 UWP 中调用 Win32 程序,Windows Desktop Extensions For The UWP 的最低版本为 14393,也就是说对方的win10最低也要为1607)

 

然后我们需要编辑 Package.appxmanifest 文件

直接查看代码:

 

在 Package 节点上,我们要加上 rescap 和 desktop 的引用,注意下面的 IgnorableNamespaces 要加上rescap ,不然你生成应用程序包的时候可以会提示配置文件错误。

 

然后修改 Capabilities 节点,加上 <rescap:Capability Name="runFullTrust"/>

 

最后在 Application 节点中加入 Extensions 节点,里面包含我们的 Win32 程序在项目中的路径

 

基本就大功告成了

下面就是在需要调用 Win32 程序的地方 写上:

await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();

 

就可以在UWP 中调用 Win32 程序了

这里我就可以调用 shutdown 来关机

 

而且即使在  “设置分配的访问权限” 下,也是可以正常调用 Win32程序 的

 

 

此外在调用 Win32 程序的时候还可以加参数(如果 Win32 程序支持的话)

更多见:

转载地址:http://qcyyl.baihongyu.com/

你可能感兴趣的文章
转---写一个网页进度loading
查看>>
Go循环语句
查看>>
使用jQuery.FileUpload插件和Backload组件裁剪上传图片
查看>>
python一中实现组合的方式
查看>>
[原创]牛刀小试-重构并实现邮件内容生成功能
查看>>
过滤器
查看>>
Android 控件使用
查看>>
linux关闭防火墙
查看>>
贪吃蛇源码
查看>>
杂谈篇:阅读优秀代码是提高开发人员修为的一种捷径
查看>>
jfreechart 实例
查看>>
gstreamer 10.5版本发布啦
查看>>
Android--控件属性汇总
查看>>
LeetCode算法题-Implement Queue Using Stacks(Java实现)
查看>>
spring 事务
查看>>
[转自知乎] 如何成为一个优秀的程序员,而不是一个优秀的码农?
查看>>
java abstract class和interface有什么区别
查看>>
虚拟机桥接模式不能上网
查看>>
lodash.js 学习记录
查看>>
1.4 Genymotion模拟器安装
查看>>