用OpenProcess、GetExitCodeProcess和TerminateProcess关闭进程
如果需要结束其他进程的执行,可以使用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类:
?
我用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() - startTimeEnd Function?