获取打包应用的激活信息

从 Windows 10 1809 版开始,经过打包的桌面应用可以调用 AppInstance.GetActivatedEventArgs 方法,在启动过程中检索某些类型的应用激活信息。 例如,可以调用此方法获取通过打开文件、单击交互式 toast 或使用协议激活应用的相关信息。 从 Windows 10 版本 2004 开始,使用外部位置打包的应用中也支持此功能(请参阅通过使用外部位置进行打包来授予程序包标识符)。

注意

除了按本文所述使用 AppInstance.GetActivatedEventArgs 方法检索特定类型的激活信息外,还可以通过定义 COM 类来检索后台任务的激活信息。 有关详细信息,请参阅创建和注册 winmain COM 后台任务

代码示例

下面的代码示例演示如何通过 Windows 窗体应用中的 Main 函数调用 AppInstance.GetActivatedEventArgs 方法。 对于应用支持的每个激活类型,将 args 返回值强制转换为相应的事件 args 类型。 此代码示例假定 Handlexxx 方法是在其他地方定义的专用激活处理程序代码。

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    var args = AppInstance.GetActivatedEventArgs();
    switch (args.Kind)
    {
        case ActivationKind.Launch:
            HandleLaunch(args as LaunchActivatedEventArgs);
            break;
        case ActivationKind.ToastNotification:
            HandleToastNotification(args as ToastNotificationActivatedEventArgs);
            break;
        case ActivationKind.VoiceCommand:
            HandleVoiceCommand(args as VoiceCommandActivatedEventArgs);
            break;
        case ActivationKind.File:
            HandleFile(args as FileActivatedEventArgs);
            break;
        case ActivationKind.Protocol:
            HandleProtocol(args as ProtocolActivatedEventArgs);
            break;
        case ActivationKind.StartupTask:
            HandleStartupTask(args as StartupTaskActivatedEventArgs);
            break;
        default:
            HandleLaunch(null);
            break;
    }

支持的激活类型

可以使用 AppInstance.GetActivatedEventArgs 方法从下表中列出的一组受支持的事件 args 对象中检索激活信息。 其中一些激活类型要求使用程序包清单中的一个程序包扩展。

仅 Windows 10 2004 版及更高版本支持 ShareTargetActivatedEventArgs 激活信息。 Windows 10 1809 版及更高版本支持所有其他激活信息类型。

事件 args 类型 程序包扩展 相关文档
ShareTargetActivatedEventArgs uap:ShareTarget 使桌面应用程序成为共享目标
ProtocolActivatedEventArgs uap:Protocol 使用协议启动应用程序
ToastNotificationActivatedEventArgs desktop:ToastNotificationActivation 来自桌面应用的 Toast 通知
StartupTaskActivatedEventArgs desktop:StartupTask 用户登录 Windows 时启动可执行文件
FileActivatedEventArgs uap:FileTypeAssociation 将打包的应用程序与一组文件类型相关联
VoiceCommandActivatedEventArgs 通过 Cortana 使用语音命令激活前台应用
LaunchActivatedEventArgs