using System.Diagnostics;
namespace Password_Manager
{
public delegate void ProcessSuccess();
public delegate void ProcessFailure(Exception e);
static class ProcessBuilder
public event ProcessSuccess? ProcessFinished;
public event ProcessFailure? ProcessFailed;
public static void Run(string procName, string args)
try
Process.Start(procName, args);
ProcessFinished?.Invoke();
}
catch (Exception e)
ProcessFailed?.Invoke(e);
ClearDelegate()
private void ClearDelegate()
//clear delegate because static
if (ProcessFinished != null)
foreach (ProcessSuccess p in ProcessFinished)
ProcessFinished -= p;
if (ProcessFailed != null)
foreach (ProcessFailure p in ProcessFailed)
ProcessFailed -= p;
public static string? GetOutput(string procName, string args)
Process proc = new Process()
StartInfo = new ProcessStartInfo
FileName = procName,
Arguments = args,
UseShellExecute = false,
RedirectStandardOutput = true;
CreateNoWindow = true;
};
proc.Start();
StringBuilder builder = new StringBuilder();
while (!proc.StandardOutput.EndOfStream)
builder.Append(proc.StandardOutput.ReadLine());
return builder.ToString();
} catch (Exception e)
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
ProcessFailed.Invoke(e);
ClearDelegate();
return null;