using System.Collections.Generic;\r
using System.Threading;\r
using System.Diagnostics;\r
- \r
+using System.Windows.Forms;\r
+using System.Globalization;\r
+\r
\r
namespace Handbrake.Functions\r
{\r
class CLI\r
{\r
+ /// <summary>\r
+ /// CLI output is based on en-US locale,\r
+ /// we use this CultureInfo as IFormatProvider to *.Parse() calls\r
+ /// </summary>\r
+ static readonly public CultureInfo Culture = new CultureInfo("en-US", false);\r
+\r
+ Process hbProc = new Process();\r
+\r
public Process runCli(object s, string query, bool stderr, bool stdout, bool useShellExec, bool noWindow)\r
{\r
- Process hbProc = new Process();\r
- hbProc.StartInfo.FileName = "hbcli.exe";\r
- hbProc.StartInfo.Arguments = query;\r
- hbProc.StartInfo.RedirectStandardOutput = stdout;\r
- hbProc.StartInfo.RedirectStandardError = stderr;\r
- hbProc.StartInfo.UseShellExecute = useShellExec;\r
- hbProc.StartInfo.CreateNoWindow = noWindow;\r
- hbProc.Start(); \r
-\r
- // Set the process Priority\r
- switch (Properties.Settings.Default.processPriority)\r
+ try\r
+ {\r
+ hbProc = new Process();\r
+ hbProc.StartInfo.FileName = "HandBrakeCLI.exe";\r
+ hbProc.StartInfo.Arguments = query;\r
+ hbProc.StartInfo.RedirectStandardOutput = stdout;\r
+ hbProc.StartInfo.RedirectStandardError = stderr;\r
+ hbProc.StartInfo.UseShellExecute = useShellExec;\r
+ hbProc.StartInfo.CreateNoWindow = noWindow;\r
+ hbProc.Start();\r
+\r
+ // Set the process Priority \r
+ switch (Properties.Settings.Default.processPriority)\r
+ {\r
+ case "Realtime":\r
+ hbProc.PriorityClass = ProcessPriorityClass.RealTime;\r
+ break;\r
+ case "High":\r
+ hbProc.PriorityClass = ProcessPriorityClass.High;\r
+ break;\r
+ case "Above Normal":\r
+ hbProc.PriorityClass = ProcessPriorityClass.AboveNormal;\r
+ break;\r
+ case "Normal":\r
+ hbProc.PriorityClass = ProcessPriorityClass.Normal;\r
+ break;\r
+ case "Low":\r
+ hbProc.PriorityClass = ProcessPriorityClass.Idle;\r
+ break;\r
+ default:\r
+ hbProc.PriorityClass = ProcessPriorityClass.BelowNormal;\r
+ break;\r
+ }\r
+ }\r
+ catch\r
{\r
- case "Realtime":\r
- hbProc.PriorityClass = ProcessPriorityClass.RealTime;\r
- break;\r
- case "High":\r
- hbProc.PriorityClass = ProcessPriorityClass.High;\r
- break;\r
- case "Above Normal":\r
- hbProc.PriorityClass = ProcessPriorityClass.AboveNormal;\r
- break;\r
- case "Normal":\r
- hbProc.PriorityClass = ProcessPriorityClass.Normal;\r
- break;\r
- case "Low":\r
- hbProc.PriorityClass = ProcessPriorityClass.Idle;\r
- break;\r
- default:\r
- hbProc.PriorityClass = ProcessPriorityClass.BelowNormal;\r
- break;\r
+ MessageBox.Show("Internal Software Error. Please Restart the Program");\r
}\r
return hbProc;\r
}\r
+\r
+ public void killCLI()\r
+ {\r
+ try\r
+ {\r
+ hbProc.Kill();\r
+ }\r
+ catch (Exception)\r
+ {\r
+ // No need to do anything. Chances are the process was already dead.\r
+ }\r
+ }\r
+\r
+ public void closeCLI()\r
+ {\r
+ hbProc.Close();\r
+ hbProc.Dispose();\r
+ }\r
+\r
+ public void setNull()\r
+ {\r
+ hbProc = new Process();\r
+ }\r
}\r
}\r