cool IT Team-Blog

Starten einer Metro App aus einer anderen Applikation unter Windows 8.1

Bis zum "Windows 8.1 und Metro App" Zeitalter konnte man Applikationen, noch ganz leicht, mithilfe der Process.Start-Methode, aus einem Programm heraus, starten. Doch die Tatsache, dass jede Metro App in einer eigenen, abgesicherten, Umgebung läuft, erschwert das Ausführen von Applikationen.

Die Lösung des Problemes 

File-Activation! Das bedeutet das Anlegen einer Datei, mit eindeutiger Fileextension, und das Öffnen dieser Datei mit dem assozierten Programm.

Realisierung von File Activation

1) Ein Klick auf den Button sollte folgenden Code ausführen.

File anlegen:

string filename="file.UniqueFileExtension";
var file = await folder.CreateFileAsync(filename, CreationCollisionOption.FailIfExists);


folder ist ein vorher ausgewählter Ordner (StorageFolder)
CreationCollisionOption, wie soll der Fall, wenn die Datei schon besteht, behandelt werden.

File starten

LauncherOptions lo = new LauncherOptions();
lo.DesiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.UseNone;
 
await Launcher.LaunchFileAsync(file, lo);

DesiredRemainingView - Fenstergröße bei Ausführen des Files

2) Die zu öffnente Applikation muss sich mit einer File Association registrieren

Package.appxmanifest > Declarations > New

FileAsso-(5).png

Wichtig !!!

Falls die Applikation mit einem File gestartet wird, wird die

Methode OnFileActivated(FileActivatedEventArgs args)

und nicht die Methode

OnLaunched(LaunchActivatedEventArgs e)

aufgerufen.

3) File zur Übergabe von Parameter nutzen

mit folgenden Code-Snippet kann man "Parameter", welche man, z.B. als Json-Schema im Übergabefile abspeichert, auslesen.

In der OnFileActivated Methode:

Frame rootFrame = Window.Current.Content as Frame;
      if (rootFrame == null)
      {
        rootFrame = new Frame();
        Window.Current.Content = rootFrame;
      }
      if (rootFrame.Content == null)
      {
        if (!rootFrame.Navigate(typeof(MainPage)))
        {
          throw new Exception("Failed to create initial page");
        }
      }
      var p = rootFrame.Content as MainPage;
      if (p != null) p.FileEvent = args;
      p.Page_Loaded(null, null);
      Window.Current.Activate();


In der Main Class:

private FileActivatedEventArgs _fileEventArgs = null;
    public FileActivatedEventArgs FileEvent
    {
      get { return _fileEventArgs; }
      set { _fileEventArgs = value; }

    }

Ist doch cool oder?

Verfasst: 12.02.2015 10:02:42 von Lion Hummer
Tags: Activation, App, File, Launch, Metro App, Windows 8.1

1


Kommentare
Für diesen Blogbeitrag liegen zurzeit keine Kommentare vor.
Einen Kommentar schreiben



 Security code