Una delle difficoltà maggiori che incontrano gli sviluppatori che iniziano ad approcciare la Universal Windows Platform, soprattutto quelli provenienti da WPF o WinForms, è quella di poter eseguire qualsiasi tipologia di API: infatti, la Universal Windows Platform viene eseguita in un ambiente sandbox, pertanto, senza determinati permessi, non sarà possibile eseguire determinati tipi di operazioni.
Per avere accesso a tutte le API desktop a cui siamo abituati dal passato, è sufficiente invocare un'applicazione console (o comunque un eseguibile) dall'applicazione Universal Windows Platform che stiamo sviluppando. Questo richiede la seguente struttura progettuale:
- L'applicazione Universal Windows Platform in sviluppo;
- Un eseguibile o una console application (.NET Framework, per ora) che possa eseguire tutte le API di cui abbiamo bisogno;
- Un'applicazione di tipo "Windows Application Packaging Project" che funge da bridge tra i due mondi.
Supponiamo di voler lanciare un eseguibile al click di un pulsante: una volta che il pulsante è stato aggiunto nell'applicazione UWP e che l'evento di click è stato gestito, possiamo avviare l'eseguibile tramite la modalità fullTrust come mostrato nell'esempio seguente:
if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0)) { await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync(); }
Poiché questo richiede permessi speciali che sono disponibili solo se l'applicazione UWP è distribuita tramite desktop (escludendo quindi Mobile, XBox, Surface Hub etc.), è necessario includere anche l'estensione "Windows Desktop Extensions for the UWP" come una normale reference.
L'applicazione da lanciare però, non è ancora stata specificata da nessuna parte ma questo richiede due passaggi: il primo è quello di aggiungere sia l'eseguibile (o la console application) sia l'applicazione UWP come reference nell'applicazione di tipo "Windows Application Packaging Project", mentre il secondo è quello di specificare, all'interno del file di manifest, che l'applicazione dovrà partire in modalità fullTrust e dovrà eseguire un eseguibile situato in un percorso specifico, come mostrato nell'esempio seguente:
<Extensions> <desktop:Extension xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" Category="windows.fullTrustProcess" Executable="DesktopExtension\DesktopExtension.exe" /> </Extensions>
Se supponiamo che l'applicazione console da lanciare sia, ad esempio, questa:
class Program { static void Main(string[] args) { Console.Title = "Launched from UWP"; Console.WriteLine("Hello world!"); Console.ReadLine(); } }
Alla pressione del pulsante sull'applicazione UWP, vedremo lanciarsi una console che stamperà a schermo la scritta "Hello World!" e che rimarrà in attesa di un input dall'utente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Centrare elementi in HTML tramite CSS
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Gestire i file esterni in una PWA
Creare un router per Single Page Application con l'evento navigate
Pubblicare un pacchetto di NuGet nel feed di GitHub
Creare applicazioni distribuite con Azure Container Apps e Dapr
Aggiungere le issue di più repository in una board in GitHub
Condividere i workflow tra più repository in GitHub
Ottimizzare la persistenza che coinvolge un solo oggetto con Entity Framework Core 7
Gestire condizioni complesse in JavaScript
Organizzare il codice JavaScript utilizzando i moduli
Gestione degli environment per il deploy con un workflow di GitHub
I più letti di oggi
- .NET Conference Italia 2022 - Milano e Online
- Visual Studio 2019 sarà disponibile a partire dal 2 Aprile
- Windows Phone 8.1 Day - Milano
- Speciale per il lancio di Visual Studio 2008, SQL Server 2008 e Windows Server 2008 dal 25/02 al 07/03
- ASP.NET 3.5 Extensions in beta la settimana prossima
- ASPItalia.com Future Web Conference: 15 gennaio 2008, L'Aquila
- Rilasciata la CTP Preview di ASP.NET 3.5 Extensions
- Tutto per portare Visual Studio 2015, ASP.NET 5 e Windows 10 sotto l'ombrellone!
- Real Code Day 4.0: costruire applicazioni reali - Firenze
- Tutto per portarsi il .NET Framework 3.5 sotto l'ombrellone