Я хотел бы попросить некоторые предложения о том, как я могу сделать следующее возможным:
Требуемая функциональность: я хочу предоставить пользователям возможность включать и отключать параметр запуска для настольного мостового приложения, которое я создаю во время работы приложения. В идеале при нажатии кнопки через контекстное меню появляется небольшое окно формы, предоставляющее пользователю два варианта. Кнопки «да» или «нет» являются двумя вариантами того, должно ли приложение запускаться автоматически во время загрузки для следующего перезапуска системы.
Используемые технологии: я создал приложение как приложение winform и превратил его в приложение uwp с помощью функции настольного моста. Я сделал это, потому что в конечном итоге оно появится в магазине приложений Windows.
Ссылки: есть API, на который я ссылаюсь, который называется StartupTask, который я нашел на этом сайте: https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.startuptask#свойства
У меня уже есть это в моем файле Package.appxmanifest:
<Extensions>
<desktop:Extension
Category="windows.startupTask"
Executable="uniqueFolder\myExeFile.exe"
EntryPoint="Windows.FullTrustApplication">
<desktop:StartupTask
TaskId="myAppTaskID"
Enabled="true"
DisplayName="MyAppDisplayName" />
</desktop:Extension>
</Extensions>
Я успешно добавил эти ссылки:
-Windows(Windows.winmd)
-System.Runtime.WindowsRuntime(WindowsRuntime.dll)
-Windows.ApplicationModel.StartupTaskContract
-Windows.Foundation.FoundationContract
Я изменил ссылку на псевдоним Windows (Windows.winmd), чтобы он был чем-то другим, кроме «глобального», чтобы избежать ошибки компилятора:
StateError The type 'StartupTaskContract' exists in both '...' and '...'.
Следующий код C# — это попытка начать работу с этой функцией, пытаясь получить startuptaskId для приложения, что, к сожалению, выдает мне ошибку.
Код С#:
async void MyFunct()
{
StartupTask startupTask = await StartupTask.GetAsync("myAppTaskID");
}
Ошибка компилятора, которую я сейчас получаю:
StateError CS1929 'IAsyncOperation<StartupTask>' does not contain a definition for 'GetAwaiter' and the best extension method overload 'WindowsRuntimeSystemExtensions.GetAwaiter(IAsyncAction)' requires a receiver of type 'IAsyncAction'
Наконец, эта функция включения и отключения должна отражаться в окне приложений запуска Windows 10, показывающем, что приложение либо включено, либо выключено.
Я пробовал несколько разных вещей без везения. Может быть, я упускаю из виду некоторые вещи, поэтому было бы полезно иметь взгляд со стороны.
С кодом расширения манифеста приложения приложение загружается автоматически при запуске системы.
Я знаю, что пользователи могут просто включить или выключить приложение через окно запуска приложения или диспетчер задач. Но эта функциональность является требованием для клиента.
Любые предложения будут высоко ценится.
Спасибо за чтение~