如果需要结束其他进程的执行,可以使用TerminateProcess函数。
BOOL TermintaeProcess(HANDLE hProcess,UINT uExitCode );
hProcess是要结束的目标进程的句柄,uExitCode指定目标进程的退出代码,可以使用GetExitCodeProcess取得一个进程的退出代码。
对于一个已经存在的进程,只能使用OpenProcess函数来取得这个进程的访问权限。
HANDLE OpenProcess(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId );
dwDesiredAccess参数指定了对该进程的访问权限,这些权限可以是:PROCESS_ALL_ACCESS即所有可进行的权限;PROCESS_QUERY_INFORMATION即查看该进程信息的权限;还有很多。bInheritHandle参数指定此函数返回的句柄是否可以被继承。dwProcessId参数指定了要打开进程的ID号,可以从任务管理器中找到它们,也可以使用ToolHelp函数获取。
我用VB写的shellCmd类:
Option Explicit
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32.dll" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Public Function CloseProcess(ByVal dwProcessId As Long) As Boolean
Dim hProcess As Long
Dim lpExitCode As Long
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, dwProcessId)
If hProcess = 0 Then
CloseProcess = False
Exit Function
End If
If GetExitCodeProcess(hProcess, lpExitCode) = 0 Then
CloseProcess = False
CloseHandle (hProcess)
Exit Function
End If
If TerminateProcess(hProcess, lpExitCode) = 0 Then
CloseProcess = False
Else
CloseProcess = True
End If
CloseHandle (hProcess)
End Function
Public Function IsRunning(ByVal ProgramID) As Boolean
Dim hProgram As Long
hProgram = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProgramID)
If hProgram <> 0 Then
IsRunning = True
Else
IsRunning = False
End If
CloseHandle hProgram
End Function
我用VB写的调用这个类的函数:
'shellCmd在ASP中调用CMD.EXE执行DOS下的EXE程序
'cmdStr为由CMD.exe及DOS下的EXE文件名路径名组成的字符串
'返回值为执行EXE所用的秒数
Public Function myShell(cmdStr) As Single
Dim start, b, PID, ret, useTime, hProcess
Set myshellclass = New shellCmd
startTime = GetTickCount()
useTime = 0
PID = Shell(cmdStr, vbHide) 'vbNormalFocus显示窗口
Do While myshellclass.IsRunning(PID) And useTime < 3000
useTime = GetTickCount() - startTime
DoEvents
Loop
Call myshellclass.CloseProcess(PID) '若该进程在运行则关闭它
myShell = GetTickCount() - startTime
End Function
分享到:
相关推荐
此代码示范了如何利用 CreateToolhelp32Snapshot API函数枚举系统当前进程。以及如何用HANDLE OpenProcess(...),TerminateProcess(...)来打开和关闭活动进程。
"Hook"是编程中的一种技术,它允许程序员拦截和修改特定函数的调用行为,而"OpenProcess"是Windows API中的一个函数,用于获取对目标进程的访问权限。当结合“免杀”(即防止被安全软件检测和阻止)的概念时,这通常...
分析和理解这些源码有助于深入学习hook技术和进程防杀机制。源码的阅读和调试可以帮助你更好地掌握Windows API的使用,以及如何利用它们来增强系统的安全性。 总之,hook `OpenProcess`是实现进程防杀的一种有效...
进程防杀技术是一种在计算机安全领域中用于保护恶意软件或合法程序免受反病毒软件和其他安全工具检测和清除的方法。Hook OpenProcess是其中一种常用的技术手段,它涉及到系统调用拦截和过程注入。 OpenProcess是...
- 谨慎使用:`TerminateProcess`应该谨慎使用,因为它不遵循正常的进程关闭流程,可能导致未保存的数据丢失,未关闭的文件句柄或网络连接泄露等问题。 - 权限检查:确保你有足够的权限终止目标进程。通常,只有管理...
在IT领域,尤其是在系统安全和恶意软件分析中,"进程防杀"是一个关键的话题,而"hook openprocess"则是这个话题中的一个重要技术手段。这里我们将深入探讨这两个概念以及它们之间的关联。 首先,让我们理解什么是...
本文将深入探讨如何在VC++(Visual C++)环境下进行进程操作,包括进程枚举、关闭进程以及查询和使用进程ID。 首先,我们要理解什么是进程枚举。在Windows操作系统中,进程枚举是指获取系统中所有正在运行的进程...
2. **打开进程**: 对于每个进程ID,使用`OpenProcess` API尝试打开进程,并请求必要的权限以读取进程信息。 3. **获取模块文件名**: 使用`GetModuleFileNameEx` API获取进程的主执行文件路径。 4. **比较进程名**: ...
`TerminateProcess`函数是Windows API提供的一种方法,用于立即结束指定进程的所有线程和资源。本文将深入探讨如何在VC++环境中使用`TerminateProcess`来结束进程,并通过实例代码进行说明。 首先,`...
在IT领域,尤其是系统安全和恶意软件防护方面,“hook 任务管理器 进程防杀”是一个关键的技术点。这个标题暗示了一种技术手段,即通过hook(钩子)技术来防止目标进程被任务管理器或其他类似工具结束,从而增强程序...
综上所述,使用Delphi实现强制关闭进程的功能,主要涉及到Windows API的调用,包括获取进程ID、打开进程句柄和终止进程等步骤。在实际编程时,需要充分理解这些API的使用方法,并考虑相应的错误处理和安全性问题。
标题提到的"VB杀死指定进程,强制关闭程序"是指使用VB代码调用API(应用程序接口)函数来实现对特定进程的监视、查找和终止操作。API函数是操作系统提供的一系列函数,允许程序员执行系统级别的任务,如管理进程、...
总之,"ApiHook.rar_APIHOOK_OpenProcess_delphi"提供的资源可能包含了一个使用Delphi编写的示例,演示了如何拦截`OpenProcess`和`TerminateProcess`,以达到保护进程的目的。这个例子对于学习API Hook技术,以及...
2. **选择进程**:用户在列表中选择一个进程后,程序需要获取选中进程的详细信息,如进程名称,可以使用`OpenProcess`函数打开进程句柄,然后通过`QueryFullProcessImageName`获取完整进程名。 3. **终止进程**:...
本篇文章将详细介绍如何使用VC++来实现关闭进程的功能,并探讨这一技术背后的原理。 首先,我们需要理解进程在操作系统中的概念。进程是执行中的程序实例,每个进程都有自己的内存空间和系统资源。在Windows系统中...
按指定的名称关闭相应进程 关键代码如下: For Each TName In NameS If mName LCase TName Then List1 AddItem TName pid my th32ProcessID pname mName Dim mProcID As Long mProcID OpenProcess 1& 1&...
根据提供的文件信息,本文将详细解释“HOOK任务管理器TerminateProcess的软件源码”中涉及的关键知识点和技术细节。 ### 一、Hook技术简介 Hook(钩子)是一种在Windows操作系统中广泛使用的机制,用于捕获特定...
4. **杀死进程**:当需要结束某个进程时,首先需要通过`OpenProcess`函数获取目标进程的句柄,然后调用`TerminateProcess`函数,传入进程句柄和退出状态码,即可结束指定进程。请注意,这一步骤需要足够的权限,否则...
本文将深入探讨如何使用VB编写程序来自动关闭指定的进程,这是一个非常实用的技术,尤其对于系统管理和自动化任务。 首先,我们需要了解Windows操作系统中的进程。进程是执行中的应用程序,每个进程都有一个唯一的...
具体来说,我们需要关注的是`OpenProcess`和`TerminateProcess`两个API函数,它们分别用于获取其他进程的句柄和终止指定进程。 实现HOOK的基本思路如下: 1. **创建自定义函数**:编写与`OpenProcess`和`...