StartupTask Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет приложение UWP или фоновую задачу классического приложения, которая выполняется при запуске системы или при входе пользователя на устройство.
public ref class StartupTask sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.ApplicationModel.StartupTaskContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class StartupTask final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.ApplicationModel.StartupTaskContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class StartupTask
Public NotInheritable Class StartupTask
- Наследование
- Атрибуты
Требования к Windows
Семейство устройств |
Windows Desktop Extension SDK (появилось в 10.0.14393.0)
|
API contract |
Windows.ApplicationModel.StartupTaskContract (появилось в v1.0)
|
Комментарии
Эта функция поддерживается в классических версиях Windows как в приложениях UWP, так и в классических приложениях в пакете приложений Windows. Дополнительные сведения о упакованных классических приложениях (также известных как приложения мост для классических приложений) см. в разделе Упаковка классических приложений. Поддержка упакованных классических приложений появилась в юбилейном обновлении Windows 10 (версия 1607) и для приложений UWP в Windows 10 Fall Creators Update (версия 1709).
Приложение должно добавить категорию windows.startup
расширения в манифест пакета приложения, чтобы активировать его при запуске или при входе пользователя. Добавление этого расширения само по себе не приведет к автоматическому запуску приложения.
Приложения UWP должны вызывать RequestEnableAsync из потока пользовательского интерфейса, чтобы активировать диалоговое окно согласия пользователя. Если пользователь согласится, приложение UWP запустится при запуске или входе пользователя. Обратите внимание, что запускаемые приложения UWP будут сворачиваться.
Если requestEnableAsync вызывается из упаковаемого классического приложения, диалоговое окно согласия пользователя не отображается. Классические приложения могут задать для своих задач запуска значение Включено в манифесте, и в этом случае им не нужно вызывать RequestEnableAsync.
В обоих случаях, чтобы включить функцию запуска, пользователь должен либо запустить приложение хотя бы один раз, либо включить функцию запуска для приложения на странице Запуска в разделе Параметры. После включения пользователь находится под контролем и может в любое время изменить состояние включенного приложения на странице Автозагрузка в разделе Параметры или на вкладке Запуск в диспетчере задач.
Следующее объявление расширения содержится в манифесте пакета приложения. Используемое объявление зависит от того, будет ли задача запуска приложением UWP или фоновой задачей классического приложения.
Расширение задачи запуска упаковаемого классического приложения
<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"...>
...
<Applications>
<Application ...>
...
<Extensions>
<uap5:Extension
Category="windows.startupTask"
Executable="MyDesktopApp.exe"
EntryPoint="Windows.FullTrustApplication">
<uap5:StartupTask
TaskId="MyStartupId"
Enabled="false"
DisplayName="My Desktop App" />
</uap5:Extension>
</Extensions>
</Application>
</Applications>
attribute | Описание |
---|---|
xmlns:uap5 | Указывает общее пространство имен контракта UAP версии 5. Примечание. Для fall Creators Update (Windows версии 1703) используйте специальное xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10", пространство имен XML рабочего стола Windows и замените вхождения uap5: на в приведенном desktop: выше примере. |
Категория | Должно иметь значение "windows.startupTask" . |
Исполняемый объект | Относительный путь к .exe для запуска. |
EntryPoint | Должно иметь значение "Windows.FullTrustApplication" . |
TaskId | Уникальный идентификатор для вашей задачи. Используя этот идентификатор, приложение может вызывать API в этом классе для включения или отключения задачи запуска программным способом. |
Enabled | Для упакованных классических приложений может быть задано значение true , чтобы указать, что приложение включено для запуска без предварительного вызова RequestEnableAsync. |
Отображаемое имя | Имя задачи, которое отображается в диспетчере задач. |
Для упакованных классических приложений разрешено использовать несколько расширений startupTask , и каждое из них может указать отдельный исполняемый файл.
Расширение задачи запуска приложения UWP
<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" ...>
...
<Applications>
<Application ...>
...
<Extensions>
<uap5:Extension Category="windows.startupTask">
<uap5:StartupTask
TaskId="MyStartupId"
Enabled="false"
DisplayName="Test startup" />
</uap5:Extension>
</Extensions>
</Application>
</Applications>
attribute | Описание |
---|---|
xmlns:uap5 | Приложения UWP используют общее пространство имен контракта UAP версии 5. |
Категория | Должно иметь значение "windows.startupTask" |
TaskId | Уникальный идентификатор задачи. Используя этот идентификатор, приложение может вызывать API в этом классе для включения или отключения задачи запуска программным способом. |
Enabled | Для приложений UWP этот атрибут игнорируется и функция неявно отключается до тех пор, пока пользователь не запустит приложение и пользователь не подтвердит запрос приложения на включение активации при запуске. |
Отображаемое имя | Имя приложения UWP, которое отображается в диспетчере задач. |
Исполняемый объект | Не обрабатывается. Если он указан, он не может быть пустым или пустым. Приложение, к которому принадлежит файл Package.appxmanifest, является подразумеваемым исполняемым файлом. |
EntryPoint | Не обрабатывается. Если он указан, он не может быть пустым или пустым. Подразумевается точка входа. |
Приложения UWP должны иметь только одну запись Исполняемый файл и расширение windows.startupTask .
Расширение windows.startupTask доступно только для приложений UWP, работающих на рабочем столе Windows.
Расширение задачи запуска Windows Web App (WWA)
<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" .m..>
...
<Applications>
<Application ...>
...
<Extensions>
<uap5:Extension Category="windows.startupTask" StartPage="EntryPage">
<uap5:StartupTask
TaskId="MyStartupId"
DisplayName="Test startup"/>
</uap5:Extension>
</Extensions>
</Application>
</Applications>
attribute | Описание |
---|---|
xmlns:uap5 | Приложения UWP используют общее пространство имен контракта UAP версии 5. |
StartPage | Имя страницы, отображаемой при запуске WWA. |
Категория | Должно иметь значение "windows.startupTask" |
TaskId | Уникальный идентификатор задачи. Используя этот идентификатор, приложение может вызывать API в этом классе для включения или отключения задачи запуска программным способом. |
Отображаемое имя | Имя приложения UWP, которое отображается в диспетчере задач. |
Для приложений WWA исполняемые файлы, EntryPoint и Enable игнорируются и могут отсутствовать или иметь значение NULL.
Пример
Следующий код создает StartupTask:
StartupTask startupTask = await StartupTask.GetAsync("MyStartupId"); // Pass the task ID you specified in the appxmanifest file
switch (startupTask.State)
{
case StartupTaskState.Disabled:
// Task is disabled but can be enabled.
StartupTaskState newState = await startupTask.RequestEnableAsync(); // ensure that you are on a UI thread when you call RequestEnableAsync()
Debug.WriteLine("Request to enable startup, result = {0}", newState);
break;
case StartupTaskState.DisabledByUser:
// Task is disabled and user must enable it manually.
MessageDialog dialog = new MessageDialog(
"You have disabled this app's ability to run " +
"as soon as you sign in, but if you change your mind, " +
"you can enable this in the Startup tab in Task Manager.",
"TestStartup");
await dialog.ShowAsync();
break;
case StartupTaskState.DisabledByPolicy:
Debug.WriteLine("Startup disabled by group policy, or not supported on this device");
break;
case StartupTaskState.Enabled:
Debug.WriteLine("Startup is enabled.");
break;
}
Свойства
State |
Возвращает состояние (включено, отключено или отключено пользователем) задачи запуска. |
TaskId |
Возвращает идентификатор задачи запуска. |
Методы
Disable() |
Отключает задачу запуска. |
GetAsync(String) |
Возвращает задачу запуска по идентификатору. |
GetForCurrentPackageAsync() |
Возвращает все задачи запуска для текущего пакета приложения. |
RequestEnableAsync() |
Запрашивает включение задачи запуска. Если задача была отключена пользователем с помощью диспетчера задач, этот метод не переопределяет его выбор, и пользователь должен повторно включить задачу вручную. |