mirror of
https://github.com/microsoft/PowerToys
synced 2025-09-05 00:45:12 +00:00
After #39955, the "exe" items from the shell commands only ever have the "Run{as admin, as other user}" commands. This adds the rest of the "file" commands - copy path, open in explorer, etc. This shuffles around some commands into the toolkit and common commands project to make this easier. <img width="814" height="505" alt="image" src="https://github.com/user-attachments/assets/36ae2c75-d4d6-4762-98ec-796986f39c20" />
44 lines
1.2 KiB
C#
44 lines
1.2 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.CommandPalette.Extensions.Toolkit;
|
|
using Windows.AI.Actions.Hosting;
|
|
|
|
namespace Microsoft.CmdPal.Ext.Indexer.Commands;
|
|
|
|
public sealed partial class ExecuteActionCommand : InvokableCommand
|
|
{
|
|
private readonly ActionInstance actionInstance;
|
|
|
|
public ExecuteActionCommand(ActionInstance actionInstance)
|
|
{
|
|
this.actionInstance = actionInstance;
|
|
this.Name = actionInstance.DisplayInfo.Description;
|
|
this.Icon = new IconInfo(actionInstance.Definition.IconFullPath);
|
|
}
|
|
|
|
public override CommandResult Invoke()
|
|
{
|
|
var task = Task.Run(InvokeAsync);
|
|
task.Wait();
|
|
|
|
return task.Result;
|
|
}
|
|
|
|
private async Task<CommandResult> InvokeAsync()
|
|
{
|
|
try
|
|
{
|
|
await actionInstance.InvokeAsync();
|
|
return CommandResult.GoHome();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return CommandResult.ShowToast("Failed to invoke action " + actionInstance.Definition.Id + ": " + ex.Message);
|
|
}
|
|
}
|
|
}
|