Hola, este es un ejemplo de estas 2 api's nativas de NTDLL.DLL, la api NtSuspendProcess sirve como dice la palabra para suspender un proceso, es como si lo dejaria trabado, y la otra NtResumeProcess sirve para liberarlo y reestablecerlo a la normalidad, es muy facil el funcionamiento no hay mucha vuelta de tuerca, simplemente se les pasa el handle del proceso abierto con OpenProcess y listo.aca en el ejemplo el PID que usa OpenProcess esta fijo, o sea al PID del proceso que quieran usar como ejempo lo van a tener que averiguar ustedes , lo hago asi para no ensuciar el codigo fuente, ya que para obtener el PID hay millones de paginas para ver como hacerlo y por eso se los dejo a ustedes.supongamos entonces que nuestro PID es el 1384 y supongamos pertenece a la calculadora de windows.
saludos.
Código (vb) [Seleccionar]
'****************************************************************
' Procedure : SuspendProcess
' Author : seba123neo
' Date : 20/10/2009
' Purpose : Suspend/Resume Process
'****************************************************************
Option Explicit
'NTDLL.DLL
Private Declare Function NtSuspendProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long
Private Declare Function NtResumeProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long
Private Enum TYPESUSPEND
Suspend = 0
Release = 1
End Enum
Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Command1_Click()
Call SuspendProcess(1384, Suspend)
End Sub
Private Sub Command2_Click()
Call SuspendProcess(1384, Release)
End Sub
Private Sub SuspendProcess(ByVal pPID As Long, ByVal pTypeSuspend As TYPESUSPEND)
Dim vHandle As Long
vHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pPID)
If vHandle <> 0 Then
Select Case pTypeSuspend
Case 0: NtSuspendProcess vHandle
Case 1: NtResumeProcess vHandle
End Select
End If
CloseHandle vHandle
End Sub
saludos.