Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Précédent : Création d’une extension. Nous allons commencer par le projet créé dans cet article.
Maintenant que vous avez créé votre extension, il est temps d’y ajouter des commandes.
Ajouter des commandes
Nous pouvons commencer par accéder au <ExtensionName>Page.cs fichier. Ce fichier est listPage qui s’affiche lorsque l’utilisateur sélectionne votre extension. Dans ce cas, vous devriez voir :
public <ExtensionName>Page()
{
Icon = IconHelpers.FromRelativePath("Assets\\StoreLogo.png");
Title = "My sample extension";
Name = "Open";
}
public override IListItem[] GetItems()
{
return [
new ListItem(new NoOpCommand()) { Title = "TODO: Implement your extension here" }
];
}
Ici, vous pouvez voir que nous avons défini l’icône de la page, le titre et le nom affichés au niveau supérieur lorsque la commande est sélectionnée. La méthode GetItems est l’emplacement où vous retournerez la liste des commandes que vous souhaitez afficher sur cette page. Pour l’instant, cela revient à renvoyer une seule commande qui ne fait rien. Essayons plutôt de faire en sorte que cette commande ouvre cette page dans le navigateur web par défaut de l’utilisateur.
Nous pouvons modifier l’implémentation de GetItems en procédant comme suit :
public override IListItem[] GetItems()
{
var command = new OpenUrlCommand("https://learn.microsoft.com/windows/powertoys/command-palette/adding-commands");
return [
new ListItem(command)
{
Title = "Open the Command Palette documentation",
}
];
}
Redéployez votre application, exécutez la commande « recharger » pour actualiser les extensions de la palette et accédez à votre extension. Vous devez voir que la commande ouvre maintenant la documentation de la palette de commandes.
OpenUrlCommand est un assistance pour l’ouverture d’une URL dans le navigateur web par défaut de l’utilisateur. Vous pouvez également implémenter une extension comme vous le souhaitez. Nous allons plutôt créer une nouvelle commande qui affiche un MessageBox. Pour ce faire, nous devons créer une classe qui implémente IInvokableCommand.
using System.Runtime.InteropServices;
namespace <ExtensionName>;
internal sealed partial class ShowMessageCommand : InvokableCommand
{
public override string Name => "Show message";
public override IconInfo Icon => new("\uE8A7");
public override CommandResult Invoke()
{
// 0x00001000 is MB_SYSTEMMODAL, which will display the message box on top of other windows.
_ = MessageBox(0, "I came from the Command Palette", "What's up?", 0x00001000);
return CommandResult.KeepOpen();
}
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type);
}
Nous pouvons maintenant ajouter cette commande à la liste des commandes dans le <ExtensionName>Page.cs fichier :
public override IListItem[] GetItems()
{
var command = new OpenUrlCommand("https://learn.microsoft.com/windows/powertoys/command-palette/creating-an-extension");
var showMessageCommand = new ShowMessageCommand();
return [
new ListItem(command)
{
Title = "Open the Command Palette documentation",
},
new ListItem(showMessageCommand),
];
}
Déployez et rechargez et présto - une commande pour afficher une boîte de message !
Conseil / Astuce
À ce stade, vous souhaiterez probablement initialiser un dépôt Git / {autre méthode de contrôle de code source de votre choix} pour votre projet. Cela facilite le suivi des modifications et le partage de votre extension avec d’autres personnes.
Nous vous recommandons d’utiliser GitHub, car il est facile de collaborer sur votre extension avec d’autres personnes, d’obtenir des commentaires et de les partager avec le monde.
Ajout de pages supplémentaires
Jusqu’à présent, nous n’avons travaillé qu’avec des commandes qui « font quelque chose ». Toutefois, vous pouvez également ajouter des commandes qui affichent des pages supplémentaires dans la palette de commandes. Il existe essentiellement deux types de « Commandes » dans la palette :
- IInvokableCommand - Il s’agit de commandes qui font quelque chose.
- IPage : il s’agit de commandes qui affichent quelque chose.
Étant donné que les implémentations IPage sont les ICommand, vous pouvez les utiliser partout où vous pouvez utiliser des commandes. Cela signifie que vous pouvez les ajouter à la liste de commandes de niveau supérieur ou à une liste de commandes sur une page, au menu contextuel d’un élément, etc.
Il existe deux types de pages différents que vous pouvez afficher :
- ListPage : il s’agit d’une page qui affiche une liste de commandes. C’est avec cela que nous avons travaillé jusqu’à présent.
- ContentPage : il s’agit d’une page qui affiche du contenu enrichi à l’utilisateur. Cela vous permet de spécifier du contenu abstrait et de laisser la palette de commandes s’inquiéter du rendu du contenu dans une expérience native. Il existe deux types de contenu différents pris en charge jusqu’à présent :
- Contenu Markdown : il s’agit du contenu écrit dans Markdown et affiché dans la palette de commandes. Pour plus d’informations, consultez MarkdownContent .
- Contenu du formulaire : il s’agit du contenu qui affiche un formulaire à l’utilisateur, puis retourne les résultats de ce formulaire à l’extension. Elles sont alimentées par des Cartes adaptatives, ce qui est utile pour obtenir des informations de l’utilisateur ou pour afficher des présentations d’informations plus complexes. Pour plus d’informations, consultez FormContent .
Commencez par ajouter une nouvelle page qui affiche une liste de commandes. Créez une classe qui implémente ListPage :
using Microsoft.CommandPalette.Extensions.Toolkit;
using System.Linq;
namespace <ExtensionName>;
internal sealed partial class MySecondPage : ListPage
{
public MySecondPage()
{
Icon = new("\uF147"); // Dial2
Title = "My second page";
Name = "Open";
}
public override IListItem[] GetItems()
{
// Return 100 CopyText commands
return Enumerable
.Range(0, 100)
.Select(i => new ListItem(new CopyTextCommand($"{i}"))
{
Title = $"Copy text {i}"
}).ToArray();
}
}
Ensuite, mettez à jour la <ExtensionName>Page.cs page pour inclure cette nouvelle page :
public override IListItem[] GetItems()
{
OpenUrlCommand command = new("https://learn.microsoft.com/windows/powertoys/command-palette/creating-an-extension");
return [
new ListItem(command)
{
Title = "Open the Command Palette documentation",
},
new ListItem(new ShowMessageCommand()),
+ new ListItem(new MySecondPage()) { Title = "My second page", Subtitle = "A second page of commands" },
];
}
Déployez, rechargez, et vous devriez maintenant voir une nouvelle page dans votre extension qui montre 100 commandes qui copient un nombre dans le Presse-papiers.
Suivant : Mettre à jour une liste de commandes
Contenu connexe
Windows developer