Imports System.Runtime.InteropServices
Imports System.Diagnostics
Imports System.IO
Module winapi
Function GetWindowThreadProcessId(ByVal hwnd As IntPtr, ByRef procId As UInt32) As UInt32
End Function
Function OpenProcess(ByVal access As UInt32, ByVal inherit As Boolean, ByVal procid As UInt32) As IntPtr
End Function
Function CloseHandle(ByVal handle As IntPtr) As Boolean
End Function
Function GetModuleFileNameExW(ByVal hProc As IntPtr, ByVal hMod As IntPtr, ByVal arrName() As Char, ByVal arrSize As UInt32) As UInt32
End Function
End Module
Public Class 任務(wù)管理器
'創(chuàng)建一個Process類型的數(shù)組
Private 進(jìn)程數(shù)組 As System.Diagnostics.Process()
Private Sub 任務(wù)管理器_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ColumnHeader1.Text = "進(jìn)程名稱"
ColumnHeader2.Text = "進(jìn)程ID"
ColumnHeader3.Text = "窗體名稱"
ColumnHeader4.Text = "進(jìn)程句柄"
ColumnHeader5.Text = "命令行"
ListView1.Items.Clear()
'通過此語句返回的是進(jìn)程數(shù)組渊抽,這些進(jìn)程數(shù)組存放的是當(dāng)前運(yùn)行存在地進(jìn)程資源
進(jìn)程數(shù)組 = System.Diagnostics.Process.GetProcesses()
'得到當(dāng)前運(yùn)行進(jìn)程數(shù)目
ToolStripStatusLabel1.Text = "進(jìn)程數(shù):" + 進(jìn)程數(shù)組.Length.ToString
'獲取計算機(jī)中每一個進(jìn)程的信息蟆豫,并顯示出來
Dim 進(jìn)程數(shù)組Process As System.Diagnostics.Process
For Each 進(jìn)程數(shù)組Process In 進(jìn)程數(shù)組
'得到進(jìn)程的名稱
Dim sProcessNeme As String = 進(jìn)程數(shù)組Process.ProcessName
'得到進(jìn)程的ID號
Dim sProcessID As String = 進(jìn)程數(shù)組Process.Id.ToString()
'活動窗口名稱
Dim nametitle As String = 進(jìn)程數(shù)組Process.MainWindowTitle
'獲得進(jìn)程句柄
Dim nameinternet As String = 進(jìn)程數(shù)組Process.MainWindowHandle
'獲得關(guān)聯(lián)進(jìn)程的主模塊
Dim name(260) As Char
Dim nameSize As UInt32 = GetModuleFileNameExW(進(jìn)程數(shù)組Process.MainWindowHandle, IntPtr.Zero, name, 260)
Dim strName As String = New String(name, 0, nameSize)
Dim lvtTemp As ListViewItem = New ListViewItem(New String() {sProcessNeme, sProcessID, nametitle, nameinternet, strName}, -1)
ListView1.Items.Add(lvtTemp)
Next
End Sub
Private 任務(wù)管理器_操作_狀態(tài) As Boolean
Private 任務(wù)管理器_操作_顯示 As Integer = 0
Private 鼠標(biāo)X坐標(biāo) As Integer
Private 鼠標(biāo)Y坐標(biāo) As Integer
Public 進(jìn)程名稱 As String
Private Sub ListView1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClick
If e.Button = Windows.Forms.MouseButtons.Right Then
任務(wù)管理器_操作.Close()
任務(wù)管理器_操作.Show()
End If
If e.Button = Windows.Forms.MouseButtons.Left Then
任務(wù)管理器_操作.Close()
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListView1.Items.Clear()
'通過此語句返回的是進(jìn)程數(shù)組,這些進(jìn)程數(shù)組存放的是當(dāng)前運(yùn)行存在地進(jìn)程資源
進(jìn)程數(shù)組 = System.Diagnostics.Process.GetProcesses()
'得到當(dāng)前運(yùn)行進(jìn)程數(shù)目
ToolStripStatusLabel1.Text = "進(jìn)程數(shù):" + 進(jìn)程數(shù)組.Length.ToString
'獲取計算機(jī)中每一個進(jìn)程的信息懒闷,并顯示出來
Dim 進(jìn)程數(shù)組Process As System.Diagnostics.Process
For Each 進(jìn)程數(shù)組Process In 進(jìn)程數(shù)組
'得到進(jìn)程的名稱
Dim sProcessNeme As String = 進(jìn)程數(shù)組Process.ProcessName
'得到進(jìn)程的ID號
Dim sProcessID As String = 進(jìn)程數(shù)組Process.Id.ToString()
'活動窗口名稱
Dim nametitle As String = 進(jìn)程數(shù)組Process.MainWindowTitle
'獲得進(jìn)程句柄
Dim nameinternet As String = 進(jìn)程數(shù)組Process.MainWindowHandle
'獲得關(guān)聯(lián)進(jìn)程的主模塊
Dim name(260) As Char
Dim nameSize As UInt32 = GetModuleFileNameExW(進(jìn)程數(shù)組Process.MainWindowHandle, IntPtr.Zero, name, 260)
Dim strName As String = New String(name, 0, nameSize)
Dim lvtTemp As ListViewItem = New ListViewItem(New String() {sProcessNeme, sProcessID, nametitle, nameinternet, strName}, -1)
ListView1.Items.Add(lvtTemp)
Next
End Sub
End Class
Public Class 任務(wù)管理器_操作
Private Sub 任務(wù)管理器_操作_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None '無任何窗體邊框樣式
Me.Top = System.Windows.Forms.Cursor.Position.Y
Me.Left = System.Windows.Forms.Cursor.Position.X
Label1.Text = "進(jìn)程名稱:" & 任務(wù)管理器.ListView1.SelectedItems.Item(0).Text
Me.TopMost = True '最頂層的窗體
Me.ShowInTaskbar = False '不在任務(wù)欄顯示窗體
Me.BackColor = Color.Gray
Label1.ForeColor = Color.Blue
End Sub
Private Sub ListBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
If MouseButtons = Windows.Forms.MouseButtons.Left Then
Dim 選擇命令 As String = ListBox1.SelectedItems.Item(0)
If 選擇命令 = "打開程序所在文件夾" Then
ElseIf 選擇命令 = "結(jié)束本進(jìn)程" Then
Dim 待結(jié)束進(jìn)程() As Process = Process.GetProcessesByName(任務(wù)管理器.ListView1.SelectedItems.Item(0).Text) '綁定獲得指的進(jìn)程定名稱
If 待結(jié)束進(jìn)程.Length > 0 Then
待結(jié)束進(jìn)程(0).Kill()
End If
ElseIf 選擇命令 = "結(jié)束所有關(guān)聯(lián)進(jìn)程" Then
ElseIf 選擇命令 = "取消" Then
Me.Close()
End If
End If
End Sub
End Class