Поделиться через


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
Наследование
Object Platform::Object IInspectable 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()

Запрашивает включение задачи запуска. Если задача была отключена пользователем с помощью диспетчера задач, этот метод не переопределяет его выбор, и пользователь должен повторно включить задачу вручную.

Применяется к

См. также раздел