initial commit
This commit is contained in:
306
VMSMonitor/Form1.vb
Normal file
306
VMSMonitor/Form1.vb
Normal file
@@ -0,0 +1,306 @@
|
||||
Public Class Form1
|
||||
|
||||
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
|
||||
Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
|
||||
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)
|
||||
Private Const WM_QUIT = &H12
|
||||
Private Const WM_CLOSE = &H10
|
||||
|
||||
Private ison As Boolean = False
|
||||
Private ismonitor As Boolean = False
|
||||
|
||||
Dim totaltime As TimeSpan
|
||||
Dim ercnt As Integer = 0
|
||||
Dim starttime As Integer = 0
|
||||
|
||||
Dim Xml As ArinXML
|
||||
|
||||
Dim Createfile As String = ""
|
||||
Dim CreateStart As String = ""
|
||||
Dim killon As Boolean = False
|
||||
|
||||
Dim fclose As Boolean = False
|
||||
Dim autoexit As Short = 0
|
||||
Dim runtime As String = Now.ToString
|
||||
|
||||
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
||||
If fclose = False Then e.Cancel = True
|
||||
Me.WindowState = FormWindowState.Minimized
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
|
||||
Me.ProgressBar1.Minimum = 0
|
||||
Me.ProgressBar1.Maximum = 6
|
||||
|
||||
totaltime = Nothing
|
||||
ercnt = 0
|
||||
Me.bt_monitor.PerformClick()
|
||||
End Sub
|
||||
|
||||
Public Function RunProcess(ByVal 파일이름 As String, Optional ByVal 실행옵션 As String = vbNullString) As Boolean
|
||||
Dim RunP As Process
|
||||
Dim B As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo
|
||||
|
||||
If FileIO.FileSystem.FileExists(파일이름) Then
|
||||
B.FileName = 파일이름
|
||||
B.WorkingDirectory = 파일이름.Substring(0, 파일이름.LastIndexOf("\"))
|
||||
B.Arguments = 실행옵션
|
||||
RunP = Process.Start(B)
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Function checkmyproc() As Process
|
||||
Try
|
||||
Dim Prc() As Process = Process.GetProcesses '//현재프로세스배열을 가져온다.
|
||||
Dim MyPrc As Process
|
||||
For Each MyPrc In Prc
|
||||
If MyPrc.ProcessName.ToUpper.IndexOf("VPS.NET") <> -1 Then
|
||||
Return MyPrc
|
||||
End If
|
||||
Next
|
||||
Return Nothing
|
||||
Catch ex As Exception
|
||||
Return Nothing
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Sub KillMyProc(ByVal 클래스명 As String)
|
||||
Dim Np As IntPtr
|
||||
Np = FindWindow(클래스명, vbNullString)
|
||||
'Me.lstOutput.Items.Add("WHND:" & Np.ToInt32.ToString)
|
||||
If Np = 0 Then
|
||||
'Form_Standard.MDIMessage.Text = "Cannot Find :" & 클래스명
|
||||
Exit Sub
|
||||
End If
|
||||
PostMessage(Np.ToInt32, WM_QUIT, 0&, 0&)
|
||||
Sleep(500)
|
||||
End Sub
|
||||
|
||||
Private Sub Msg(ByVal m As String)
|
||||
Me.lb_msg.Text = m
|
||||
My.Application.DoEvents()
|
||||
End Sub
|
||||
Public Sub oKillMyProc(ByVal 프로세스명 As String)
|
||||
Dim Prc() As Process = Process.GetProcesses '//현재프로세스배열을 가져온다.
|
||||
Dim MyPrc As Process
|
||||
Dim 파일명 As String = 프로세스명.Substring(프로세스명.LastIndexOf("\") + 1).ToUpper
|
||||
For Each MyPrc In Prc
|
||||
If (MyPrc.ProcessName & ".EXE").ToUpper = 파일명 Then
|
||||
|
||||
' MsgBox(MyPrc.StartInfo.Fileame)
|
||||
MyPrc.Kill()
|
||||
End If
|
||||
Next
|
||||
Sleep(500)
|
||||
End Sub
|
||||
|
||||
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
|
||||
Dim Prc As Process = checkmyproc()
|
||||
If Prc Is Nothing Then
|
||||
|
||||
'//프로세스가 없다.
|
||||
If Me.Timer2.Enabled = False Then
|
||||
autoexit += 1
|
||||
If autoexit > 3 Then
|
||||
Me.Close()
|
||||
End If
|
||||
End If
|
||||
|
||||
ison = False
|
||||
Me.bt_kill.Enabled = False
|
||||
Me.bt_run.Enabled = True
|
||||
'Me.Text = "noprocee"
|
||||
Me.status_run.ForeColor = Color.Gray
|
||||
If Me.starttime > 0 Then
|
||||
Me.status_run.ForeColor = Color.Orange
|
||||
End If
|
||||
|
||||
Xml = New ArinXML(My.Application.Info.DirectoryPath & "\conf.xml")
|
||||
Dim File As String = Xml.Data("config", "autocreate")
|
||||
Dim Filename As String = Xml.Data("config", "createfile")
|
||||
Runtime = Xml.Data("config", "runtime")
|
||||
|
||||
If File.Trim = "1" AndAlso Filename.Trim <> "" AndAlso Me.Timer2.Enabled = False Then
|
||||
Me.ProgressBar1.ForeColor = Color.Green
|
||||
Me.Timer2.Enabled = True
|
||||
Me.Timer2.Start()
|
||||
End If
|
||||
|
||||
Else
|
||||
autoexit = 0
|
||||
Me.status_run.ForeColor = Color.Blue
|
||||
Me.bt_kill.Enabled = True
|
||||
Me.bt_run.Enabled = False
|
||||
|
||||
ison = True
|
||||
Try
|
||||
dispalyinfo(Prc)
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub dispalyinfo(ByVal prc As Process)
|
||||
Xml = New ArinXML(My.Application.Info.DirectoryPath & "\conf.xml")
|
||||
Createfile = Xml.Data("config", "createfile")
|
||||
CreateStart = Xml.Data("config", "createstart")
|
||||
|
||||
|
||||
Dim Buf As New System.Text.StringBuilder
|
||||
Buf.AppendLine("NOW TIME:" & Now.ToString)
|
||||
|
||||
If CreateStart.Trim <> "" AndAlso Createfile <> "" Then
|
||||
Buf.AppendLine(">> 생산중:" & Createfile)
|
||||
Buf.AppendLine(">> 판정시작:" & CreateStart)
|
||||
killon = True
|
||||
Me.status_create.ForeColor = Color.Blue
|
||||
Else
|
||||
Me.status_create.ForeColor = Color.Gray
|
||||
killon = False
|
||||
End If
|
||||
|
||||
Buf.AppendLine("PROCESS NAME:" & prc.ProcessName)
|
||||
Buf.AppendLine("Start Time:" & prc.StartTime.ToString())
|
||||
Buf.AppendLine("Total time:" & prc.TotalProcessorTime.ToString())
|
||||
Buf.AppendLine("SessionID:" & prc.SessionId.ToString)
|
||||
Buf.AppendLine("Response:" & prc.Responding)
|
||||
Buf.AppendLine("Handle:" & prc.Handle.ToString)
|
||||
Buf.AppendLine("Handle Count:" & prc.HandleCount)
|
||||
Buf.AppendLine("prc.HasExited:" & prc.HasExited)
|
||||
Buf.AppendLine("prc.Id:" & prc.Id)
|
||||
Buf.AppendLine("prc.MainWindowTitle:" & prc.MainWindowTitle)
|
||||
Buf.AppendLine("prc.PrivilegedProcessorTime.ToString:" & prc.PrivilegedProcessorTime.ToString)
|
||||
Buf.AppendLine("prc.UserProcessorTime.ToString:" & prc.UserProcessorTime.ToString)
|
||||
Buf.AppendLine("Error Count:" & Me.ercnt)
|
||||
|
||||
If Me.totaltime = Nothing Then
|
||||
Me.totaltime = prc.TotalProcessorTime
|
||||
Else
|
||||
Dim ts As TimeSpan = prc.TotalProcessorTime - Me.totaltime
|
||||
|
||||
Buf.AppendLine("Run Status:" & ts.ToString())
|
||||
|
||||
|
||||
If (Now - CDate(Me.runtime)).Seconds = 15 And killon Then
|
||||
Me.ProgressBar1.ForeColor = Color.Red
|
||||
ercnt += 1
|
||||
Me.ProgressBar1.Value = ercnt
|
||||
Else
|
||||
Me.ProgressBar1.Value = 0
|
||||
ercnt = 0
|
||||
End If
|
||||
|
||||
Me.totaltime = prc.TotalProcessorTime
|
||||
|
||||
If ercnt > 5 And killon Then '//10초를 넘도록
|
||||
bt_kill.PerformClick()
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
Buf.AppendLine(prc.ToString())
|
||||
|
||||
Dim runtime As String = Xml.Data("config", "runtime")
|
||||
Msg("Running Time:" & runtime)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
|
||||
|
||||
starttime += 1
|
||||
Me.ProgressBar1.Value = starttime
|
||||
|
||||
If starttime > 5 Then
|
||||
|
||||
Me.ProgressBar1.Value = 0
|
||||
Me.ProgressBar1.ForeColor = Color.Red
|
||||
Me.bt_run.PerformClick()
|
||||
starttime = 0
|
||||
Me.Timer2.Stop()
|
||||
Me.Timer2.Enabled = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub bt_monitor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_monitor.Click
|
||||
Me.ProgressBar1.Value = 0
|
||||
|
||||
If Me.ismonitor Then
|
||||
Me.Timer1.Stop()
|
||||
Me.Timer1.Enabled = False
|
||||
Me.ismonitor = False
|
||||
Me.bt_monitor.Text = "모니터 시작"
|
||||
Msg("MONITOR OFF")
|
||||
Me.status_monitor.ForeColor = Color.Gray
|
||||
Else
|
||||
Me.Timer1.Enabled = True
|
||||
Me.Timer1.Start()
|
||||
Me.ismonitor = True
|
||||
Me.bt_monitor.Text = "모니터 종료"
|
||||
Me.status_monitor.ForeColor = Color.Blue
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_run.Click
|
||||
If Me.ison Then
|
||||
MsgBox("중복실행이므로 실행을 할 수 없습니다", MsgBoxStyle.Information, "확인")
|
||||
Else
|
||||
|
||||
RunProcess(My.Application.Info.DirectoryPath & "\vps.net.exe", "TINDEVIL")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_kill.Click
|
||||
Dim Prc As Process = checkmyproc()
|
||||
If Not Prc Is Nothing Then
|
||||
|
||||
Dim sta As Boolean = Prc.CloseMainWindow()
|
||||
If sta Then
|
||||
My.Application.DoEvents()
|
||||
|
||||
While (1)
|
||||
Dim P As Process = checkmyproc()
|
||||
If P Is Nothing Then Exit While
|
||||
My.Application.DoEvents()
|
||||
End While
|
||||
|
||||
Xml = New ArinXML(My.Application.Info.DirectoryPath & "\conf.xml")
|
||||
Xml.Data("config", "autocreate") = "1"
|
||||
Xml.Data("config", "shutdown") = "0"
|
||||
|
||||
Me.ProgressBar1.ForeColor = Color.Green
|
||||
starttime = 0
|
||||
Me.Timer2.Enabled = True
|
||||
Me.Timer2.Start()
|
||||
Else
|
||||
Xml = New ArinXML(My.Application.Info.DirectoryPath & "\conf.xml")
|
||||
Xml.Data("config", "autocreate") = "1"
|
||||
Xml.Data("config", "shutdown") = "0"
|
||||
|
||||
Prc.Kill()
|
||||
Me.ProgressBar1.ForeColor = Color.Green
|
||||
starttime = 0
|
||||
Me.Timer2.Enabled = True
|
||||
Me.Timer2.Start()
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ToolStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub ToolStripButton1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
|
||||
Me.fclose = True
|
||||
End
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user