[gelöst] UWP App aus eigener App starten

Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

[gelöst] UWP App aus eigener App starten

Beitrag von af0815 »

Ich schlage mich gerade mit WIndows UWP Apps herum. Unter anderen damit , wie man solche Apps aus der eigenen App heraus startet. Das ganze ist NUR für Windows 10 und besser, über Vorteile, Nachteile und sonstige Glaubensfragen will ich hier nicht diskutieren.

Das starten von UWP-Apps funktioniert schon mal aus dem Explorer heraus nicht richtig - hehe - wenn mn mal den richtigen Pfad gefunden hat. Aus dem Startmenü heraus funktioniert das aber ohne Probleme.

Beispiel für den Test:
Die Kamera-App (Windows-Store-App) von WIndows10 aus einem Lazarusprogramm heraus starten.

Probleme:
-> Es ist über das Startmenü nicht möglich den Ort der Executable festzustellen.
-> Eine Verknüpfung (für Testzwecke) kann auch nicht per Klick erstellt werden.
-> Wenn man die Datei findet ("C:\Program Files\WindowsApps\Microsoft.WindowsCamera_2017.308.50.0_x64__8wekyb3d8bbwe\WindowsCamera.exe") und man sich die Rechte zum Öffnen der Verzeichnisses verschafft, so lässt sich trotzdem nichts machen.

Any Hints ?

Andreas

BTW: Ich habe kein Interesse an guten Ratschlägen, wie man das mit Linux etc. besser machen kann.


Edit:Hier steht es wie es prinzipiell geht

Code: Alles auswählen

explorer.exe shell:appsFolder\put-your-PackageFamilyName-here!put-your-app-ID-here


mal sehen ob es mit Lazarus und TAsyncProzess auch geht. :-)
Zuletzt geändert von af0815 am Do 13. Jul 2017, 11:09, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: UWP App aus eigener App starten

Beitrag von af0815 »

Ja, geht wenn man die im vorigen Post erwähnte Anleitung stur einhält

Code: Alles auswählen

begin
  fExecutable:='explorer.exe';
  if not Assigned(fproc) then begin
    fProc := TAsyncProcess.Create(nil);
    fProc.Options := [poNoConsole, poStderrToOutPut];
    fProc.ShowWindow := swoNone;
    fproc.StartupOptions := [suoUseShowWindow];
    fProc.OnTerminate := @OnProcTerminated;
    fProc.CurrentDirectory := ExtractFilePath(fExecutable);
    fProc.Executable := fExecutable;
    fproc.Parameters.Add('shell:AppsFolder\Xyyyyy_9bvcwp4wa7nda!App');
    fProc.ShowWindow := swoShowNormal;
    fproc.StartupOptions := fproc.StartupOptions + [suoUseShowWindow];
    fProc.Execute;
  end;
end;
 


Nur schliessen kann man nichts, wenn die läuft, dann läuft die. Wenn man das Lazarusprogramm mehrmals aufruft, so bleibt nur eine Instanz erzeugt, das passt mir ganz gut.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: [gelöst] UWP App aus eigener App starten

Beitrag von shokwave »

Danke für die Info, das brauche ich sicher auch noch mal.

Ich hab da mal ein wenig weiter geforscht und man kann sich die benötigten IDs auch aus der Registry holen(HKCU\Software\Classes\AppX...). Leider sind da manche Apps doppelt und dreifach vorhanden und der Name ist auch fast nie direkt hinterlegt.

Minibeispielprogramm im Anhang.
Dateianhänge
RunUWPApp.zip
Beispielprogramm das die UWP-Apps aus der Registry liest uns startet.
(2.71 KiB) 150-mal heruntergeladen
mfg Ingo

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [gelöst] UWP App aus eigener App starten

Beitrag von af0815 »

Nur so nebenbei:

UWP-Apps können :
-> nur nach einer Userinteraktion ausserhalb der Sandbox mit speziell freigegebenen Verzeichnissen lesen/schreiben.
-> keine IPC ausser UWP zu UWP, und Textfiles :-)
-> Sockets am selben Rechner können nicht erreicht werden (lokaler loopback geht nicht)
-> UWP Objekte können eingeschränkt in WinForms und WPF verwendet werden, passen aber nicht in den Objekten so richtig zusammen
-> Automatisierte Apps sind aktuell ein Problem, da man immer einen Benutzereingriff benötigt um die Sandbox überwinden zu dürfen
-> ..... es gibt super brauchbare Mediakomponenten, die es in WinForms und WPF nicht gibt. Manche neue Hardware kann man nur unter UWP richtig nutzen !!!!

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [gelöst] UWP App aus eigener App starten

Beitrag von af0815 »

Fürs Archiv -> Killen bzw. Stoppen von UWP Apps

Code: Alles auswählen

procedure TFormTmp.StopRemoteApp;
var
  fExecutable : String;
  fPr: TAsyncProcess;
begin
  fExecutable:='Taskkill.exe';
  fPr := TAsyncProcess.Create(nil);
  try
    fPr.Options := [poNoConsole, poStderrToOutPut];
    fPr.ShowWindow := swoNone;
    fPr.StartupOptions := [suoUseShowWindow];
    fPr.CurrentDirectory := ExtractFilePath(fExecutable);
    fPr.Executable := fExecutable;
    fPr.Parameters.Add('/IM');
    fPr.Parameters.Add('NameDerUWPAppImTaskmanager.exe');
    fPr.Parameters.Add('/f');
//    ShowMessage(fpr.Parameters.Text);
    fPr.Execute;
  finally
     fPr.Free;
  end;
end;
 
 
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [gelöst] UWP App aus eigener App starten

Beitrag von af0815 »

shokwave hat geschrieben:Ich hab da mal ein wenig weiter geforscht und man kann sich die benötigten IDs auch aus der Registry holen(HKCU\Software\Classes\AppX...).

Ich habe mich damit jetzt ein wenig mehr auseinandergesetzt und sehe, das nicht alle UWP-Apps mit dem Registrybereich erfasst werden. Meine aktuelle App ist in der Übersicht zum Beispiel nicht vorhanden. Der Mechanismus muss noch weitere Bereiche der Registry verwenden. Mal sehen ob ich im Laufe der Zeit noch mehr Informationen finde.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten