3 Imports System.Diagnostics
\r
4 Imports System.Threading
\r
5 Imports System.ComponentModel
\r
6 Imports System.Windows.Forms
\r
8 Public Class frmQueue
\r
11 Delegate Sub SetTextCallback(ByVal [text] As Integer)
\r
16 Private Sub btn_delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_delete.Click
\r
17 list_queue.Items.Remove(list_queue.SelectedItem)
\r
20 Private Sub btn_Close_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Close.Click
\r
25 Private Sub btn_q_encoder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_q_encoder.Click
\r
27 Dim ApplicationPath As String = Application.StartupPath ' The applications start parth
\r
28 Dim encodeItems As Integer = list_queue.Items.Count ' Amount of items to encode
\r
30 encodeItems = encodeItems - 1
\r
32 'Start the encode process
\r
34 Dim params As String = list_queue.Items.Item(encodeItems)
\r
35 Dim proc As New System.Diagnostics.Process
\r
36 proc = System.Diagnostics.Process.Start("""" + ApplicationPath + "\hbcli.exe""", params)
\r
38 If My.Settings.Priority <> "Normal" Then
\r
40 level = My.Settings.Priority
\r
44 proc.PriorityClass = ProcessPriorityClass.RealTime
\r
46 proc.PriorityClass = ProcessPriorityClass.High
\r
48 proc.PriorityClass = ProcessPriorityClass.AboveNormal
\r
50 proc.PriorityClass = ProcessPriorityClass.BelowNormal
\r
52 proc.PriorityClass = ProcessPriorityClass.Idle
\r
56 Catch ex As Exception
\r
57 MessageBox.Show("Unable to launch the encoder. Queue run failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand)
\r
58 MessageBox.Show(ex.ToString)
\r
61 ' Lets start the process monitor
\r
62 hbcliMonitor = New ProcessMonitor()
\r
63 Dim t = New Thread(AddressOf hbcliMonitor.tmrProcCheck)
\r
67 ' When this task is finished, remove it from the queue
\r
68 list_queue.Items.RemoveAt(encodeItems)
\r
69 Catch ex As Exception
\r
70 ' quietly ignore the error should the user try to encode with nothing on the queue by mistake.
\r
78 Sub TheadCompletedMonitor(ByVal isRunning As Integer) Handles hbcliMonitor.ThreadComplete
\r
80 Dim ApplicationPath As String = Application.StartupPath ' The applications start parth
\r
81 Dim encodeItems As Integer = list_queue.Items.Count ' Amount of items to encode
\r
83 encodeItems = encodeItems - 1
\r
86 If encodeItems = -1 Then
\r
87 MessageBox.Show("Status: Queue completed!")
\r
89 'Start the encode process
\r
91 Shell("""" + ApplicationPath + "\hbcli.exe""" + list_queue.Items.Item(encodeItems))
\r
92 Catch ex As Exception
\r
93 MessageBox.Show("Unable to launch the encoder. Queue run failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand)
\r
94 MessageBox.Show(ex.ToString)
\r
97 ' Lets start the process monitor
\r
98 hbcliMonitor = New ProcessMonitor()
\r
99 Dim t = New Thread(AddressOf hbcliMonitor.tmrProcCheck)
\r
102 ' When this task is finished, remove it from the queue
\r
103 Me.SetText(encodeItems)
\r
104 'MsgBox("1 Enocde Process Finished: ", isRunning)
\r
111 '# Trying to safely alter stuff on the worker thread here.
\r
113 Private Sub SetText(ByVal [text] As Integer)
\r
114 If Me.list_queue.InvokeRequired Then
\r
115 Dim d As New SetTextCallback(AddressOf SetText)
\r
116 Me.Invoke(d, New Object() {[text]})
\r
118 Me.list_queue.Items.RemoveAt([text])
\r
123 '# Process Monitoring Stuff Here
\r
126 Dim WithEvents hbcliMonitor As ProcessMonitor
\r
128 Public Class ProcessMonitor
\r
129 Public isRunning As Integer = 1
\r
131 Public Event ThreadComplete(ByVal isRunning As Integer)
\r
133 Public Sub tmrProcCheck()
\r
134 Dim isRunning As Integer
\r
135 Dim process2 As Process = New Process
\r
136 Dim running As Boolean = True
\r
137 Dim hbProcess As Process() = Process.GetProcesses()
\r
141 hbProcess = Process.GetProcesses()
\r
143 Dim processArr2 As Process() = hbProcess
\r
144 Dim i As Integer = 0
\r
145 While i < CInt(processArr2.Length)
\r
146 Dim process1 As Process = processArr2(i)
\r
147 If process1.ProcessName.Equals("hbcli") Then
\r
154 RaiseEvent ThreadComplete(isRunning)
\r
158 Private Sub btn_up_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_up.Click
\r
159 Dim count As Integer = list_queue.Items.Count
\r
160 Dim itemToMove As Integer = list_queue.SelectedIndex
\r
161 Dim previousItem As String = ""
\r
162 Dim previousItemint As Integer = 0
\r
164 If (itemToMove > 0) Then
\r
165 previousItemint = itemToMove - 1
\r
166 previousItem = list_queue.Items.Item(previousItemint)
\r
167 list_queue.Items.Item(previousItemint) = list_queue.Items.Item(itemToMove)
\r
168 list_queue.Items.Item(itemToMove) = previousItem
\r
169 list_queue.SelectedIndex = list_queue.SelectedIndex - 1
\r
173 Private Sub btn_down_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_down.Click
\r
174 Dim count As Integer = list_queue.Items.Count
\r
175 Dim itemToMove As Integer = list_queue.SelectedIndex
\r
176 Dim itemAfter As String = ""
\r
177 Dim itemAfterInt As Integer = 0
\r
180 MessageBox.Show(count)
\r
181 MessageBox.Show(itemToMove)
\r
182 If (itemToMove < (count - 1)) Then
\r
183 itemAfterInt = itemToMove + 1
\r
184 itemAfter = list_queue.Items.Item(itemAfterInt)
\r
185 list_queue.Items.Item(itemAfterInt) = list_queue.Items.Item(itemToMove)
\r
186 list_queue.Items.Item(itemToMove) = itemAfter
\r
187 list_queue.SelectedIndex = list_queue.SelectedIndex + 1
\r