UWP 呼叫Win32 關機

2021-09-07 20:26:04 字數 2667 閱讀 6026

原文:

uwp 呼叫win32 關機

話說最近程式需要個晚上自動關機的功能

原則上 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)

設定程式開啟後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 節點上,我們要加上 rescap 和 desktop 的引用,注意下面的 ignorablenamespaces 要加上rescap ,不然你生成應用程式包的時候可以會提示配置檔案錯誤。

<

package

ignorablenamespaces="uap mprescap"

>

然後修改 capabilities 節點,加上

<

capabilities

>

<

capability

name="internetclient"

/><

rescap:capability

name="runfulltrust"

/>

capabilities

>

<

>

<

executable="$targetnametoken$.exe"

>

<

uap:visualelements

square150x150logo="assets\square150x150logo.png"

square44x44logo="assets\square44x44logo.png"

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

>

>

>

基本就大功告成了

下面就是在需要呼叫 win32 程式的地方 寫上:

就可以在uwp 中呼叫 win32 程式了

這裡我就可以呼叫 shutdown 來關機

而且即使在  「設定分配的訪問許可權」 下,也是可以正常呼叫 win32程式 的

此外在呼叫 win32 程式的時候還可以加引數(如果 win32 程式支援的話)

Win32程式設計

win32 malloc函式的底層實現是win32api utf 16編碼以16位無符號整數為單位,注意是16位為乙個單位,不是乙個字元就只有16位,這個要看字元的unicode編碼處於什麼範圍而定,有可能是2個位元組,也可能是4個位元組現在機器上的unicode編碼一般就是指utf 16 以兩個位...

win32控制台 win32工程 MFC工程的區別

空專案 控制台 問2個問題即可。1.控制台 vs win32 mfc?嗯,有不有臉?有臉,選win32或mfc。沒有臉,選控制台。臉就是視窗,就是window.s 這個有臉 這個沒臉 控制台與win32 mfc 互動方式的不同,前者是cml 命令模式 後者是gui 使用者介面 2.mfc vs wi...

WIN32程式設計模板

include lresult callback wndproc hwnd,uint,wparam,lparam int winapi winmain hinstance hinstance,hinstance hprevinstance,pstr szcmdline,int icmdshow te...