我要判断一个进程是否存在,但进程没有标题,也不知道pid号,好改怎么办啊!
解决方案 »
- 随机产生一个限定的英文字母的方法
- winsock控件在服务器端的使用问题,如果出现网络故障,winsock会不会收到相关信息?
- 随机数模拟掷子的一个问题
- 求助:在地图图层上,不选中的情况下,怎样在程序中得到刚刚画完的图元
- 很简单的问题,进来看看,有分!
- 怎样判断.NET Framework是否存在?
- 请问怎样才能使vb操作注册表中VB and VBA Program Settings以外的键值?
- 如何解决 VB6 2000 年问题
- Do_Better (程序人生): (特刊号:金版) ******** 春节联欢茶话会 ********
- vb6中的报表错误
- datagrid的row问题
- 如何判断一个进程是否存在。
1. 如果知道processid, 直接用API openprocess 检测.
2. WaitForSingleObject: 检测指定的进程并等待它运行结束,
对你的工作没什么用; 3. 枚举进程列表: win9X 环境使用toolhelp函数库。winnt/2k下没测试过. ''函数声明
Declare Function CreateToolhelp32Snapshot Lib "kernel32"
(ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long Declare Function Process32First Lib "kernel32" (ByVal
hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Boolean Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot
As Long, ByRef lppe As PROCESSENTRY32) As Boolean '' 常量定义:
Public Const MAX_PATH = 260 - 1
Public Const PROCESS_TERMINATE = &H1
Public Const TH32CS_SNAPHEAPLIST = &H1
Public Const TH32CS_SNAPPROCESS = &H2
Public Const TH32CS_SNAPTHREAD = &H4
Public Const TH32CS_SNAPMODULE = &H8
Public Const TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST +
TH32CS_SNAPPROCESS + TH32CS_SNAPTHREAD + TH32CS_SNAPMODULE
Public Const TH32CS_INHERIT = &H80000000 ''类型定义:
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(MAX_PATH) As Byte
End Type ''变量定义
Public FSnapshotHandle As Long
Public FProcessEntry32 As PROCESSENTRY32
Public ContinueLoop As Boolean
Public ProcID As Long
Public ProcName As String ''代码:
public function checkproc(ProcName As string) as boolean
'' procname:需要检测的进程文件名(例如notepad.exe) dim i as long
dim ExeName As String FSnapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0)
If FSnapshotHandle <> 0 Then
FProcessEntry32.dwSize = Len(FProcessEntry32)
ContinueLoop = Process32First(FSnapshotHandle, FProcessEntry32) While ContinueLoop
'取文件名
For i = 0 To 260 - 1
ExeName = ExeName & Chr(FProcessEntry32.szExeFile(i))
Next i
''去掉NULL
ExeName = LCase(Mid(ExeName, 1, InStr(1, ExeName, Chr(0)) - 1))
If InStr(ExeName, ProcName) <> 0 Then '系统管理
ProcID = FProcessEntry32.th32ProcessID
ProcName = ExeName
Checkproc=true
exit function
End If ContinueLoop = Process32Next(FSnapshotHandle, FProcessEntry32)
Wend
end if '' CloseHandle FSnapshotHandle
CloseHandle FSnapshotHandle end function