public static void GetActivationInfo()
        {
            AppActivationArguments args = AppInstance.GetCurrent().GetActivatedEventArgs();
            ExtendedActivationKind kind = args.Kind;

            ReportInfo($"ActivationKind: {kind}");

            if (kind == ExtendedActivationKind.Launch)
            {
                if (args.Data is ILaunchActivatedEventArgs launchArgs)
                {
                    string   argString  = launchArgs.Arguments;
                    string[] argStrings = argString.Split();
                    foreach (string arg in argStrings)
                    {
                        if (!string.IsNullOrWhiteSpace(arg))
                        {
                            ReportInfo(arg);
                        }
                    }
                }
            }
            else if (kind == ExtendedActivationKind.File)
            {
                if (args.Data is IFileActivatedEventArgs fileArgs)
                {
                    IStorageItem file = fileArgs.Files.FirstOrDefault();
                    if (file != null)
                    {
                        ReportInfo(file.Name);
                    }
                }
            }
        }
        private static async Task <bool> DetermineActivationKind()
        {
            bool isRedirect = false;

            // Find out what kind of activation this is.
            AppActivationArguments args = AppInstance.GetCurrent().GetActivatedEventArgs();
            ExtendedActivationKind kind = args.Kind;

            ReportInfo($"ActivationKind={kind}");
            if (kind == ExtendedActivationKind.Launch)
            {
                // This is a launch activation: here we'll register for file activation.
                ReportLaunchArgs("Main", args);
                RegisterForFileActivation();
            }
            else if (kind == ExtendedActivationKind.File)
            {
                ReportFileArgs("Main", args);

                try
                {
                    // This is a file activation: here we'll get the file information,
                    // and register the file name as our instance key.
                    if (args.Data is IFileActivatedEventArgs fileArgs)
                    {
                        IStorageItem file        = fileArgs.Files[0];
                        AppInstance  keyInstance = AppInstance.FindOrRegisterForKey(file.Name);
                        ReportInfo($"Registered key = {keyInstance.Key}");

                        // If we successfully registered the file name, we must be the
                        // only instance running that was activated for this file.
                        if (keyInstance.IsCurrent)
                        {
                            // Report successful file name key registration.
                            ReportInfo($"IsCurrent=true; registered this instance for {file.Name}");

                            // Hook up the Activated event, to allow for this instance of the app
                            // getting reactivated as a result of multi-instance redirection.
                            keyInstance.Activated += OnActivated;
                        }
                        else
                        {
                            isRedirect = true;
                            await keyInstance.RedirectActivationToAsync(args);
                        }
                    }
                }
                catch (Exception ex)
                {
                    ReportInfo($"Error getting instance information: {ex.Message}");
                }
            }

            return(isRedirect);
        }
 private static void ReportFileArgs(string callSite, AppActivationArguments args)
 {
     ReportInfo($"called from {callSite}");
     if (args.Data is IFileActivatedEventArgs fileArgs)
     {
         IStorageItem item = fileArgs.Files.FirstOrDefault();
         if (item is StorageFile file)
         {
             ReportInfo($"file: {file.Name}");
         }
     }
 }
        private static void OnActivated(object sender, AppActivationArguments args)
        {
            ExtendedActivationKind kind = args.Kind;

            if (kind == ExtendedActivationKind.Launch)
            {
                ReportLaunchArgs($"OnActivated ({activationCount++})", args);
            }
            else if (kind == ExtendedActivationKind.File)
            {
                ReportFileArgs($"OnActivated ({activationCount++})", args);
            }
        }
 private static void ReportLaunchArgs(string callSite, AppActivationArguments args)
 {
     ReportInfo($"called from {callSite}");
     if (args.Data is ILaunchActivatedEventArgs launchArgs)
     {
         string[] argStrings = launchArgs.Arguments.Split();
         for (int i = 0; i < argStrings.Length; i++)
         {
             string argString = argStrings[i];
             ReportInfo($"arg[{i}] = {argString}");
         }
     }
 }
        private void GetActivationInfo()
        {
            AppActivationArguments args = AppInstance.GetCurrent().GetActivatedEventArgs();
            ExtendedActivationKind kind = args.Kind;

            OutputMessage($"ActivationKind: {kind}");

            if (kind == ExtendedActivationKind.Launch)
            {
                ILaunchActivatedEventArgs launchArgs = args.Data as ILaunchActivatedEventArgs;
                if (launchArgs != null)
                {
                    string   argString  = launchArgs.Arguments;
                    string[] argStrings = argString.Split();
                    foreach (string arg in argStrings)
                    {
                        if (!string.IsNullOrWhiteSpace(arg))
                        {
                            OutputMessage(arg);
                        }
                    }
                }
            }
            else if (kind == ExtendedActivationKind.File)
            {
                IFileActivatedEventArgs fileArgs = args.Data as IFileActivatedEventArgs;
                if (fileArgs != null)
                {
                    IStorageItem file = fileArgs.Files.FirstOrDefault();
                    OutputMessage(file.Name);
                }
            }
            else if (kind == ExtendedActivationKind.Protocol)
            {
                IProtocolActivatedEventArgs protocolArgs = args.Data as IProtocolActivatedEventArgs;
                if (protocolArgs != null)
                {
                    Uri uri = protocolArgs.Uri;
                    OutputMessage(uri.AbsoluteUri);
                }
            }
            else if (kind == ExtendedActivationKind.StartupTask)
            {
                IStartupTaskActivatedEventArgs startupArgs = args.Data as IStartupTaskActivatedEventArgs;
                if (startupArgs != null)
                {
                    OutputMessage(startupArgs.TaskId);
                }
            }
        }
Example #7
0
 // TODO This is an example method for the case when app is activated through a file.
 // Feel free to remove this if you do not need this.
 public void OnFileActivated(AppActivationArguments activatedEventArgs)
 {
 }