关闭

VB利用进程句柄挂起恢复进程

2726人阅读 评论(0) 收藏 举报

VERSION 5.00
Begin VB.Form frmMain
   Caption         =   "Form1"
   ClientHeight    =   3090
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   3090
   ScaleWidth      =   4680
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton cmdTerminate
      Caption         =   "终止该进程"
      Height          =   375
      Left            =   3240
      TabIndex        =   3
      Top             =   1920
      Width           =   1335
   End
   Begin VB.CommandButton cmdClose
      Caption         =   "关闭句柄"
      Height          =   495
      Left            =   1920
      TabIndex        =   2
      Top             =   1800
      Width           =   1335
   End
   Begin VB.TextBox txtPid
      Height          =   495
      Left            =   720
      TabIndex        =   1
      Text            =   "123"
      Top             =   480
      Width           =   1695
   End
   Begin VB.CommandButton cmdResume
      Caption         =   "恢复进程"
      Height          =   495
      Left            =   120
      TabIndex        =   0
      Top             =   1800
      Width           =   1815
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
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 NtSuspendProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long
Private Declare Function NtResumeProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private hProcess As Long

Private Sub cmdClose_Click()
    CloseHandle hProcess
End Sub

Private Sub cmdResume_Click()
    If IsNumeric(txtPid.Text) Then
        hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, CLng(txtPid.Text))
        If hProcess <> 0 Then
            NtResumeProcess hProcess
        End If
    End If
End Sub

Private Sub cmdTerminate_Click()
    If hProcess Then
        TerminateProcess hProcess, 0
    Else
        If IsNumeric(txtPid.Text) Then
            hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, CLng(txtPid.Text))
            If hProcess <> 0 Then
                TerminateProcess hProcess, 0
            End If
        End If
    End If
End Sub
 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:321925次
    • 积分:4426
    • 等级:
    • 排名:第6709名
    • 原创:81篇
    • 转载:0篇
    • 译文:2篇
    • 评论:431条
    文章分类
    最新评论
    chenhui530新浪博客