This repository has been archived on 2025-09-26. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Password-Manager-Legacy/GUI/ProcessBuilder.cs

62 lines
1.2 KiB
C#
Raw Normal View History

using System.Diagnostics;
2023-03-31 07:16:27 +02:00
using System.Text;
namespace Password_Manager
{
public delegate void ProcessSuccess();
public delegate void ProcessFailure(Exception e);
2023-03-31 07:17:11 +02:00
sealed class ProcessBuilder
{
public event ProcessSuccess? ProcessFinished;
public event ProcessFailure? ProcessFailed;
2023-03-31 07:17:11 +02:00
public void Run(string procName, string args)
{
try
{
Process.Start(procName, args);
ProcessFinished?.Invoke();
}
catch (Exception e)
{
ProcessFailed?.Invoke(e);
}
}
2023-03-31 07:17:11 +02:00
public string? GetOutput(string procName, string args)
{
try
{
Process proc = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = procName,
Arguments = args,
UseShellExecute = false,
2023-03-31 07:18:07 +02:00
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
StringBuilder builder = new StringBuilder();
while (!proc.StandardOutput.EndOfStream)
{
builder.Append(proc.StandardOutput.ReadLine());
}
ProcessFinished?.Invoke();
return builder.ToString();
} catch (Exception e)
{
2023-03-31 07:18:07 +02:00
MessageBox.Show(e.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
ProcessFailed?.Invoke(e);
}
return null;
}
}
}