OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Functions / CLI.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Threading;\r
4 using System.Diagnostics;\r
5 using System.Windows.Forms;\r
6 using System.Globalization;\r
7 \r
8 \r
9 namespace Handbrake.Functions\r
10 {\r
11     class CLI\r
12     {\r
13         /// <summary>\r
14         /// CLI output is based on en-US locale,\r
15         /// we use this CultureInfo as IFormatProvider to *.Parse() calls\r
16         /// </summary>\r
17         static readonly public CultureInfo Culture = new CultureInfo("en-US", false);\r
18 \r
19         Process hbProc = new Process();\r
20 \r
21         public Process runCli(object s, string query, bool stderr, bool stdout, bool useShellExec, bool noWindow)\r
22         {\r
23             try\r
24             {\r
25                 hbProc = new Process();\r
26                 hbProc.StartInfo.FileName = "HandBrakeCLI.exe";\r
27                 hbProc.StartInfo.Arguments = query;\r
28                 hbProc.StartInfo.RedirectStandardOutput = stdout;\r
29                 hbProc.StartInfo.RedirectStandardError = stderr;\r
30                 hbProc.StartInfo.UseShellExecute = useShellExec;\r
31                 hbProc.StartInfo.CreateNoWindow = noWindow;\r
32                 hbProc.Start();\r
33 \r
34                 // Set the process Priority \r
35                 switch (Properties.Settings.Default.processPriority)\r
36                 {\r
37                     case "Realtime":\r
38                         hbProc.PriorityClass = ProcessPriorityClass.RealTime;\r
39                         break;\r
40                     case "High":\r
41                         hbProc.PriorityClass = ProcessPriorityClass.High;\r
42                         break;\r
43                     case "Above Normal":\r
44                         hbProc.PriorityClass = ProcessPriorityClass.AboveNormal;\r
45                         break;\r
46                     case "Normal":\r
47                         hbProc.PriorityClass = ProcessPriorityClass.Normal;\r
48                         break;\r
49                     case "Low":\r
50                         hbProc.PriorityClass = ProcessPriorityClass.Idle;\r
51                         break;\r
52                     default:\r
53                         hbProc.PriorityClass = ProcessPriorityClass.BelowNormal;\r
54                         break;\r
55                 }\r
56             }\r
57             catch\r
58             {\r
59                 MessageBox.Show("Internal Software Error. Please Restart the Program");\r
60             }\r
61             return hbProc;\r
62         }\r
63 \r
64         public void killCLI()\r
65         {\r
66             try\r
67             {\r
68                 hbProc.Kill();\r
69             }\r
70             catch (Exception)\r
71             {\r
72                 // No need to do anything. Chances are the process was already dead.\r
73             }\r
74         }\r
75 \r
76         public void closeCLI()\r
77         {\r
78             hbProc.Close();\r
79             hbProc.Dispose();\r
80         }\r
81 \r
82         public void setNull()\r
83         {\r
84             hbProc = new Process();\r
85         }\r
86     }\r
87 }\r