把exe文件包含到项目中: 然后我们添加引用 Windows Desktop Extensions For The UW

时间:2022-04-08 05:29:54

话说比来措施需要个晚上自动关机的成果

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

上网搜索之

有人说只要这样就可以了

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

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

https://marketplace.visualstudio.com/items?itemName=LanceContreras.BrokeredUWPComponentProjectTemplates

这个 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文件包罗到项目中:

把exe文件包含到项目中: 然后我们添加引用 Windows Desktop Extensions For The UW

然后我们添加引用 “ Windows Desktop Extensions For The UWP ”,添加阿谁版本看本身的项目需要了,我项目的方针版本直接就是1709,所以直接引用最新版的扩展。

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

把exe文件包含到项目中: 然后我们添加引用 Windows Desktop Extensions For The UW

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

直接检察代码:

把exe文件包含到项目中: 然后我们添加引用 Windows Desktop Extensions For The UW

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

<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" IgnorableNamespaces="uap mp rescap">

然后改削 Capabilities 节点,加上 <rescap:Capability/>

<Capabilities> <Capability Name="internetClient" /> <rescap:Capability Name="runFullTrust"/> </Capabilities>

最后在 Application 节点中插手 Extensions 节点,里面包罗我们的 Win32 措施在项目中的路径

<Applications> <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="AppShutdown1.App"> <uap:VisualElements DisplayName="AppShutdown1" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="AppShutdown1" BackgroundColor="transparent"> <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"/> <uap:SplashScreen Image="Assets\SplashScreen.png" /> </uap:VisualElements> <Extensions> <desktop:Extension Category="windows.fullTrustProcess" Executable="Exe\ConsoleShutdown1.exe" /> </Extensions> </Application> </Applications>

根基就大功乐成了

下面就是在需要挪用 Win32 措施的处所 写上:

await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();

就可以在UWP 中挪用 Win32 措施了

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

而且即使在  “设置分配的访谒权限” 下,也是可以正常挪用 Win32措施 的

把exe文件包含到项目中: 然后我们添加引用 Windows Desktop Extensions For The UW

别的在挪用 Win32 措施的时候还可以加参数(如果 Win32 措施撑持的话)