#1 [VB.NET] Pausar, resumir e finalizar Ter Dez 25, 2012 10:49 pm
Muitos tem me enviaram MP's para fazer um tutorial de Pausar, resumir e finalizar um processo.
Então, lets go!
Abra seu projeto, dê 2 cliques no form e adicione o código abaixo de baixo de Public Class Form1.
Agora crie um button e adicione o código abaixo, que vai ser o Pausar.
Crie outro button, esse vai ser o Resumir.
E por último, mais um button que será o Finalizar.
Então, lets go!
Abra seu projeto, dê 2 cliques no form e adicione o código abaixo de baixo de Public Class Form1.
- Spoiler:
- Declare Function SuspendThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As UInteger
Declare Function ResumeThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As UInteger
Public Declare Function OpenThread Lib "kernel32.dll" (ByVal dwDesiredAccess As ThreadAccess, ByVal bInheritHandle As Boolean, ByVal dwThreadId As UInteger) As IntPtr
Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hHandle As IntPtr) As Boolean
Public Enum ThreadAccess As Integer
TERMINATE = 1
SUSPEND_RESUME = 2
GET_CONTEXT = 8
SET_CONTEXT = 16
SET_INFORMATION = 32
QUERY_INFORMATION = 64
SET_THREAD_TOKEN = 128
IMPERSONATE = 256
DIRECT_IMPERSONATION = 512
End Enum
Private Sub ResumeProcess(ByVal process As System.Diagnostics.Process)
For Each t As ProcessThread In process.Threads
Dim th As IntPtr
th = OpenThread(ThreadAccess.SUSPEND_RESUME, False, t.Id)
If th <> IntPtr.Zero Then
ResumeThread(th)
CloseHandle(th)
End If
Next
End Sub
Private Sub SuspendProcess(ByVal process As System.Diagnostics.Process)
For Each t As ProcessThread In process.Threads
Dim th As IntPtr
th = OpenThread(ThreadAccess.SUSPEND_RESUME, False, t.Id)
If th <> IntPtr.Zero Then
SuspendThread(th)
CloseHandle(th)
End If
Next
End Sub
Agora crie um button e adicione o código abaixo, que vai ser o Pausar.
- Spoiler:
- Dim note As Process() = Process.GetProcessesByName("PointBlank")
SuspendProcess(note(0))
Crie outro button, esse vai ser o Resumir.
- Spoiler:
- Dim note As Process() = Process.GetProcessesByName("PointBlank")
ResumeProcess(note(0))
E por último, mais um button que será o Finalizar.
- Spoiler:
- Dim Processos As Process() = Process.GetProcessesByName("PointBlank")
For Each Processo As Process In Processos
Processo.Kill()
Next