StartupTask 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示在系统启动时或用户登录到其设备时运行的 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 中引入)
|
注解
UWP 应用和 Windows 应用包中的桌面应用程序的 Windows 桌面版本都支持此功能。 有关打包的桌面应用程序 (也称为桌面桥应用) 的详细信息,请参阅打包桌面应用程序。 Windows 10周年更新 (版本 1607) 中引入了对打包桌面应用程序的支持,Windows 10 Fall Creators Update (版本 1709) 中引入了对 UWP 应用的支持。
应用必须将扩展类别添加到 windows.startup
其应用包清单,以便在启动时或用户登录时激活。 添加此扩展本身不会自动导致应用启动。
UWP 应用必须从 UI 线程调用 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>
属性 | 说明 |
---|---|
xmlns:uap5 | 指定常规 UAP 协定版本 5 命名空间。 注意:对于 Fall Creators 更新 (Windows 版本 1703) 改用 Windows 桌面特定的 XML 命名空间, xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10", 并在上面的示例中将 desktop: 替换为 uap5: 。 |
类别 | 必须具有值 "windows.startupTask" 。 |
可执行文件 | 要启动的 .exe 的相对路径。 |
EntryPoint | 必须具有值 "Windows.FullTrustApplication" 。 |
TaskId | 任务的唯一标识符。 使用此标识符,应用可以调用此类中的 API,以编程方式启用或禁用启动任务。 |
已启用 | 对于打包的桌面应用,可以设置为 true ,以指示应用已启用启动,而无需首先调用 RequestEnableAsync。 |
DisplayName | 任务管理器中显示的任务名称。 |
对于打包的桌面应用,允许使用多个 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>
属性 | 说明 |
---|---|
xmlns:uap5 | UWP 应用使用常规 UAP 协定版本 5 命名空间。 |
类别 | 必须具有 值 "windows.startupTask" |
TaskId | 任务的唯一标识符。 使用此标识符,应用可以调用此类中的 API,以编程方式启用或禁用启动任务。 |
已启用 | 对于 UWP 应用,将忽略此属性并隐式禁用该功能,直到用户首次启动应用,并且用户确认应用请求在启动时启用激活。 |
DisplayName | 任务管理器中显示的 UWP 应用的名称。 |
可执行文件 | 已忽略。 如果提供,则不能为空或 null。 此 Package.appxmanifest 文件所属的应用是隐含的可执行文件。 |
EntryPoint | 已忽略。 如果提供,则不能为空或 null。 入口点是默示的。 |
UWP 应用应只有一个 可执行文件 条目和 windows.startupTask 扩展。
windows.startupTask 扩展仅适用于在 Windows 桌面上运行的 UWP 应用。
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>
属性 | 说明 |
---|---|
xmlns:uap5 | UWP 应用使用常规 UAP 协定版本 5 命名空间。 |
StartPage | WWA 启动时要显示的页面的名称。 |
类别 | 必须具有 值 "windows.startupTask" |
TaskId | 任务的唯一标识符。 使用此标识符,应用可以调用此类中的 API,以编程方式启用或禁用启动任务。 |
DisplayName | 任务管理器中显示的 UWP 应用的名称。 |
对于 WWA 应用, 将忽略 Executable、 EntryPoint 和 Enables ,并且可能缺失或为 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 |
获取启动任务的 ID。 |
方法
Disable() |
禁用启动任务。 |
GetAsync(String) |
按 ID 获取启动任务。 |
GetForCurrentPackageAsync() |
获取当前应用包的所有启动任务。 |
RequestEnableAsync() |
请求启用启动任务。 如果用户使用任务管理器禁用了任务,则此方法不会覆盖其选择,并且用户必须手动重新启用任务。 |