如何判断一个进程是否存在。

Huaraco 2003-11-25 07:57:15
我想写一个记录上机操作的程序,谁能给点思路,或例子.
枚举进程后,还要知道这个程序运行了多长时间。我该怎么做。

顺便问一下,我该如何判断一个进程是否存在?
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingtian2008 2003-12-07
  • 打赏
  • 举报
回复
up
sacredwarrior 2003-11-26
  • 打赏
  • 举报
回复
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Sub Form_Load()
On Error GoTo ErrorHandler
Dim hSnapShot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Variant

AppIsRun = False

'* 得到多个进程和这些进程使用的线程
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
'* 设置进程入口的长度
uProcess.dwSize = Len(uProcess)
'* 得到第一个进程
r = Process32First(hSnapShot, uProcess)

Do While r
MsgBox Left(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0))

'* 得到下一个进程
r = Process32Next(hSnapShot, uProcess)
Loop

CleanExit:

'* 关闭快照句柄
CloseHandle hSnapShot
Exit Sub
ErrorHandler:
GoTo CleanExit
End Sub
silverblade 2003-11-25
  • 打赏
  • 举报
回复

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧