OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Functions / CLI.cs
index 3ed958d..259a98c 100644 (file)
@@ -2,46 +2,86 @@ using System;
 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