是否可以使用 C 中的 Win32 API 呼叫打開 Windows 的設定對話框?例如顯示幕設定(允許您設定顯示幕解析度的設定)和網路設定(允許您設定 Wifi 設定的設定)。
如果可能,該怎么做?
或者,這根本不可能,用戶必須手動打開它們?
uj5u.com熱心網友回復:
啟動 Windows 設定應用程式解釋了如何使用ms-settings:URI 方案啟動 Windows 設定應用程式。它還列出了支持的 URI,包括這個問題要求的 URI(ms-settings:network-wifi和ms-settings:display)。
雖然檔案建議使用 Windows 運行時 API Launcher.LaunchUriAsync,但對于 C(相對于 C )來說,這有點復雜。由于可以使用start命令(例如start ms-settings:display)從命令提示符呼叫 URI,因此可以合理地假設它ShellExecuteExW也可以處理ms-settings:URI 方案。
事實上,這似乎確實有效:
#include <Windows.h>
#include <stdio.h>
int main() {
SHELLEXECUTEINFOW sei = {
.cbSize = sizeof(sei),
.hwnd = NULL,
.lpVerb = L"open",
.lpFile = L"ms-settings:display",
//.lpFile = L"ms-settings:network-wifi",
.nShow = SW_SHOWNORMAL,
};
if (!ShellExecuteExW(&sei))
{
printf("Failed with error code %d", GetLastError());
}
}
我找不到任何指定此行為的檔案,因此這很可能是不受支持的實作細節。我還將提到,雖然SHELLEXECUTEINFOW有一個lpClass可用于指定 URI 協議方案的欄位,但我使用它的所有迭代都不適用于ms-settings:URI 方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/440059.html
上一篇:更新圖表的源資料時,是否可以在Excel中使用內置的圖表影片?
下一篇:SetWindowsHookEx(WH_SHELL,...):事件HSHELL_WINDOWREPLACED是什么意思?
