mirror of
https://github.com/Stone-Red-Code/ClipCMD.git
synced 2026-09-04 00:46:10 +02:00
Add support for script parameters
This commit is contained in:
+36
-12
@@ -1,4 +1,6 @@
|
|||||||
using System;
|
using Microsoft.VisualBasic.FileIO;
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@@ -125,23 +127,45 @@ public partial class MainWindow : Window
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
clipboardText = clipboardText[prefixTextBox.Text.Length..^suffixTextBox.Text.Length].Trim();
|
clipboardText = clipboardText[prefixTextBox.Text.Length..^suffixTextBox.Text.Length].Trim().Replace("\"\"", "\0");
|
||||||
|
|
||||||
if (!commands.TryGetValue(clipboardText, out string? script))
|
TextFieldParser parser = new TextFieldParser(new StringReader(clipboardText))
|
||||||
|
{
|
||||||
|
HasFieldsEnclosedInQuotes = true
|
||||||
|
};
|
||||||
|
|
||||||
|
parser.SetDelimiters(" ");
|
||||||
|
|
||||||
|
string[] sections = parser.ReadFields() ?? Array.Empty<string>();
|
||||||
|
|
||||||
|
sections = sections.Select(s => s.Replace('\0', '\"')).ToArray();
|
||||||
|
|
||||||
|
if (sections.Length == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string command = sections[0].Trim();
|
||||||
|
|
||||||
|
if (!commands.TryGetValue(command, out string? script))
|
||||||
{
|
{
|
||||||
oldData = Clipboard.GetDataObject();
|
oldData = Clipboard.GetDataObject();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PowerShell ps = PowerShell.Create().AddScript(script);
|
PowerShell ps = PowerShell
|
||||||
|
.Create()
|
||||||
|
.AddScript(script)
|
||||||
|
.AddParameters(sections.Skip(1).ToList());
|
||||||
|
|
||||||
StringBuilder outText = new StringBuilder();
|
StringBuilder outText = new StringBuilder();
|
||||||
|
|
||||||
foreach (PSObject commandResult in ps.Invoke())
|
foreach (PSObject commandResult in ps.Invoke())
|
||||||
{
|
{
|
||||||
_ = outText.AppendLine(commandResult.ToString());
|
_ = outText.AppendLine(commandResult?.ToString() ?? string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
logListBox.Items.Insert(0, $"{clipboardText} > {outText.ToString().TrimEnd()}");
|
logListBox.Items.Insert(0, $"{command} > {outText.ToString().TrimEnd()}");
|
||||||
|
|
||||||
Clipboard.SetText(outText.ToString().TrimEnd());
|
Clipboard.SetText(outText.ToString().TrimEnd());
|
||||||
|
|
||||||
@@ -183,7 +207,7 @@ public partial class MainWindow : Window
|
|||||||
{
|
{
|
||||||
foreach (ParseError error in errors)
|
foreach (ParseError error in errors)
|
||||||
{
|
{
|
||||||
AddError($"[{commandNames}]\n{error}");
|
AddError(commandNames, error.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,11 +215,11 @@ public partial class MainWindow : Window
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(commandName))
|
if (string.IsNullOrWhiteSpace(commandName))
|
||||||
{
|
{
|
||||||
AddError($"[{commandNames}]\nCommand \"{commandName}\" is empty!");
|
AddError(commandNames, "Command \"{commandName}\" is empty!");
|
||||||
}
|
}
|
||||||
else if (!commands.TryAdd(commandName.Trim(), script.ToString()))
|
else if (!commands.TryAdd(commandName.Trim(), script.ToString()))
|
||||||
{
|
{
|
||||||
AddError($"[{commandNames}]\nCommand \"{commandName}\" already exists!");
|
AddError(commandNames, "Command \"{commandName}\" already exists!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -212,7 +236,7 @@ public partial class MainWindow : Window
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AddError($"[{commandNames}]\nInput has to start with [<Command Name>]!");
|
AddError(commandNames, "Input has to start with [<Command Name>]!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,12 +246,12 @@ public partial class MainWindow : Window
|
|||||||
File.WriteAllText(cmdPath, commandsTextBox.Text);
|
File.WriteAllText(cmdPath, commandsTextBox.Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddError(string error)
|
private void AddError(string commandNames, string error)
|
||||||
{
|
{
|
||||||
errorPanel.Visibility = Visibility.Visible;
|
errorPanel.Visibility = Visibility.Visible;
|
||||||
logPanel.Visibility = Visibility.Collapsed;
|
logPanel.Visibility = Visibility.Collapsed;
|
||||||
commandsTextBox.Foreground = System.Windows.Media.Brushes.Red;
|
commandsTextBox.Foreground = System.Windows.Media.Brushes.Red;
|
||||||
_ = errorListBox.Items.Add(error);
|
_ = errorListBox.Items.Add($"[{commandNames}]\n{error}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FixTextBox_TextChanged(object sender, System.Windows.Input.KeyEventArgs e)
|
private void FixTextBox_TextChanged(object sender, System.Windows.Input.KeyEventArgs e)
|
||||||
|
|||||||
Reference in New Issue
Block a user