Files
PowerToys/src/modules/launcher/Plugins/Microsoft.Plugin.Shell/Main.cs

328 lines
11 KiB
C#
Raw Normal View History

2020-08-17 10:00:56 -07:00
// 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.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Windows.Input;
using Microsoft.PowerToys.Settings.UI.Lib;
using Wox.Infrastructure.Logger;
using Wox.Infrastructure.Storage;
using Wox.Plugin;
using Wox.Plugin.SharedCommands;
using Control = System.Windows.Controls.Control;
namespace Microsoft.Plugin.Shell
{
public class Main : IPlugin, ISettingProvider, IPluginI18n, IContextMenu, ISavable
{
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
private readonly ShellPluginSettings _settings;
private readonly PluginJsonStorage<ShellPluginSettings> _storage;
2020-08-17 10:00:56 -07:00
private string IconPath { get; set; }
private PluginInitContext _context;
public Main()
{
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
_storage = new PluginJsonStorage<ShellPluginSettings>();
2020-08-17 10:00:56 -07:00
_settings = _storage.Load();
}
public void Save()
{
_storage.Save();
}
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "Keeping the process alive, but logging the exception")]
2020-08-17 10:00:56 -07:00
public List<Result> Query(Query query)
{
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
if (query == null)
{
throw new ArgumentNullException(nameof(query));
}
2020-08-17 10:00:56 -07:00
List<Result> results = new List<Result>();
string cmd = query.Search;
if (string.IsNullOrEmpty(cmd))
{
return ResultsFromlHistory();
}
else
{
var queryCmd = GetCurrentCmd(cmd);
results.Add(queryCmd);
var history = GetHistoryCmds(cmd, queryCmd);
results.AddRange(history);
try
{
List<Result> folderPluginResults = Folder.Main.GetFolderPluginResults(query);
results.AddRange(folderPluginResults);
}
catch (Exception e)
{
Log.Exception($"|Microsoft.Plugin.Shell.Main.Query|Exception when query for <{query}>", e);
}
return results;
}
}
private List<Result> GetHistoryCmds(string cmd, Result result)
{
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
IEnumerable<Result> history = _settings.Count.Where(o => o.Key.Contains(cmd, StringComparison.CurrentCultureIgnoreCase))
2020-08-17 10:00:56 -07:00
.OrderByDescending(o => o.Value)
.Select(m =>
{
if (m.Key == cmd)
{
result.SubTitle = "Shell: " + string.Format(CultureInfo.CurrentCulture, Properties.Resources.wox_plugin_cmd_cmd_has_been_executed_times, m.Value);
2020-08-17 10:00:56 -07:00
return null;
}
var ret = new Result
{
Title = m.Key,
SubTitle = "Shell: " + string.Format(CultureInfo.CurrentCulture, Properties.Resources.wox_plugin_cmd_cmd_has_been_executed_times, m.Value),
2020-08-17 10:00:56 -07:00
IcoPath = IconPath,
Action = c =>
{
Execute(Process.Start, PrepareProcessStartInfo(m.Key));
return true;
},
};
return ret;
}).Where(o => o != null).Take(4);
return history.ToList();
}
private Result GetCurrentCmd(string cmd)
{
Result result = new Result
{
Title = cmd,
Score = 5000,
SubTitle = "Shell: " + Properties.Resources.wox_plugin_cmd_execute_through_shell,
2020-08-17 10:00:56 -07:00
IcoPath = IconPath,
Action = c =>
{
Execute(Process.Start, PrepareProcessStartInfo(cmd));
return true;
},
};
return result;
}
private List<Result> ResultsFromlHistory()
{
IEnumerable<Result> history = _settings.Count.OrderByDescending(o => o.Value)
.Select(m => new Result
{
Title = m.Key,
SubTitle = "Shell: " + string.Format(CultureInfo.CurrentCulture, Properties.Resources.wox_plugin_cmd_cmd_has_been_executed_times, m.Value),
2020-08-17 10:00:56 -07:00
IcoPath = IconPath,
Action = c =>
{
Execute(Process.Start, PrepareProcessStartInfo(m.Key));
return true;
},
}).Take(5);
return history.ToList();
}
private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdministrator = false)
{
command = command.Trim();
command = Environment.ExpandEnvironmentVariables(command);
var workingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
var runAsAdministratorArg = !runAsAdministrator && !_settings.RunAsAdministrator ? string.Empty : "runas";
ProcessStartInfo info;
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
if (_settings.Shell == ExecutionShell.Cmd)
2020-08-17 10:00:56 -07:00
{
var arguments = _settings.LeaveShellOpen ? $"/k \"{command}\"" : $"/c \"{command}\" & pause";
info = ShellCommand.SetProcessStartInfo("cmd.exe", workingDirectory, arguments, runAsAdministratorArg);
}
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
else if (_settings.Shell == ExecutionShell.Powershell)
2020-08-17 10:00:56 -07:00
{
string arguments;
if (_settings.LeaveShellOpen)
{
arguments = $"-NoExit \"{command}\"";
}
else
{
arguments = $"\"{command} ; Read-Host -Prompt \\\"Press Enter to continue\\\"\"";
}
info = ShellCommand.SetProcessStartInfo("powershell.exe", workingDirectory, arguments, runAsAdministratorArg);
}
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
else if (_settings.Shell == ExecutionShell.RunCommand)
2020-08-17 10:00:56 -07:00
{
// Open explorer if the path is a file or directory
if (Directory.Exists(command) || File.Exists(command))
{
info = ShellCommand.SetProcessStartInfo("explorer.exe", arguments: command, verb: runAsAdministratorArg);
}
else
{
var parts = command.Split(new[] { ' ' }, 2);
if (parts.Length == 2)
{
var filename = parts[0];
if (ExistInPath(filename))
{
var arguments = parts[1];
info = ShellCommand.SetProcessStartInfo(filename, workingDirectory, arguments, runAsAdministratorArg);
}
else
{
info = ShellCommand.SetProcessStartInfo(command, verb: runAsAdministratorArg);
}
}
else
{
info = ShellCommand.SetProcessStartInfo(command, verb: runAsAdministratorArg);
}
}
}
else
{
throw new NotImplementedException();
}
info.UseShellExecute = true;
_settings.AddCmdHistory(command);
return info;
}
private void Execute(Func<ProcessStartInfo, Process> startProcess, ProcessStartInfo info)
{
try
{
startProcess(info);
}
catch (FileNotFoundException e)
{
var name = "Plugin: Shell";
var message = $"Command not found: {e.Message}";
_context.API.ShowMsg(name, message);
}
catch (Win32Exception e)
{
var name = "Plugin: Shell";
var message = $"Error running the command: {e.Message}";
_context.API.ShowMsg(name, message);
}
}
User/ryanbod/shell plugin fxcop (#6043) * Enabling FxCop static analysis. * Fixes for CA2227 Change 'Count' to be read-only by removing the property setter. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019 * Fix for: CA1822: Mark members as static https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822?view=vs-2019 * Fix for CA1805: Do not initialize unnecessarily. https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1805?view=vs-2019 * Fix for: Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Severity Code Description Project File Line Suppression State Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Shell C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Shell\Settings.cs 9 Active * Fix for CA1307: Specify StringComparison & CA1305: Specify IFormatProvider https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019 https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305?view=vs-2019 * Fix for CA1062: Validate arguments of public methods https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1062?view=vs-2019 * Suppressing CA1031 Modify 'Query' to catch a more specific allowed exception type, or rethrow the exception'
2020-08-21 12:10:41 -07:00
private static bool ExistInPath(string filename)
2020-08-17 10:00:56 -07:00
{
if (File.Exists(filename))
{
return true;
}
else
{
var values = Environment.GetEnvironmentVariable("PATH");
if (values != null)
{
foreach (var path in values.Split(';'))
{
var path1 = Path.Combine(path, filename);
var path2 = Path.Combine(path, filename + ".exe");
if (File.Exists(path1) || File.Exists(path2))
{
return true;
}
}
return false;
}
else
{
return false;
}
}
}
public void Init(PluginInitContext context)
{
this._context = context;
_context.API.ThemeChanged += OnThemeChanged;
UpdateIconPath(_context.API.GetCurrentTheme());
}
// Todo : Update with theme based IconPath
private void UpdateIconPath(Theme theme)
{
if (theme == Theme.Light || theme == Theme.HighContrastWhite)
{
IconPath = "Images/shell.light.png";
}
else
{
IconPath = "Images/shell.dark.png";
}
}
private void OnThemeChanged(Theme currentTheme, Theme newTheme)
{
UpdateIconPath(newTheme);
}
public Control CreateSettingPanel()
{
throw new NotImplementedException();
2020-08-17 10:00:56 -07:00
}
public string GetTranslatedPluginTitle()
{
return Properties.Resources.wox_plugin_cmd_plugin_name;
2020-08-17 10:00:56 -07:00
}
public string GetTranslatedPluginDescription()
{
return Properties.Resources.wox_plugin_cmd_plugin_description;
2020-08-17 10:00:56 -07:00
}
public List<ContextMenuResult> LoadContextMenus(Result selectedResult)
{
var resultlist = new List<ContextMenuResult>
{
new ContextMenuResult
{
PluginName = Assembly.GetExecutingAssembly().GetName().Name,
Title = Properties.Resources.wox_plugin_cmd_run_as_administrator,
2020-08-17 10:00:56 -07:00
Glyph = "\xE7EF",
FontFamily = "Segoe MDL2 Assets",
AcceleratorKey = Key.Enter,
AcceleratorModifiers = ModifierKeys.Control | ModifierKeys.Shift,
Action = c =>
{
Execute(Process.Start, PrepareProcessStartInfo(selectedResult.Title, true));
return true;
},
},
};
return resultlist;
}
public void UpdateSettings(PowerLauncherSettings settings)
{
}
}
}