如何查看机嚣上运行了多少进程,并且看到进程的名称!___高手请进!!!!

accp258 2003-10-30 09:27:51
如何查看机嚣上运行了多少进程,并且看到进程的名称!
就像任务管理器中显示的那些一样!!!

谢谢了。
在线等待!!!!
...全文
39 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Huaraco 2004-01-04
  • 打赏
  • 举报
回复
Private Declare Function EnumProcesses Lib "psapi.dll" _
(ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Declare Function EnumProcessModules Lib "psapi.dll" _
(ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long

Private Declare Function GetModuleFileNameExA Lib "psapi.dll" _
(ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function CreateRemoteThread Lib "kernel32" _
(ByVal hProcess As Long, lpThreadAttributes As Long, _
ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Long, _
ByVal dwCreationFlags As Long, lpThreadId As Long) As Long

Private Declare Function CreateThread Lib "kernel32" _
(lpThreadAttributes As Any, _
ByVal dwStackSize As Long, lpStartAddress As Long, _
lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long

Private Declare Function GetProcAddress Lib "kernel32" _
(ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" _
(ByVal lpModuleName As String) As Long

Private Declare Function WriteProcessMemory Lib "kernel32" _
(ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, _
ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Const PROCESS_QUERY_INFORMATION = &H400
Const PROCESS_VM_READ = &H10
Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF
Private IWillPH As Long
Private XX
Dim threaid2 As Long
'Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF

Private Sub Command2_Click()
Dim cb As Long
Dim cbNeeded As Long
Dim NumElements As Long
Dim ProcessIDs() As Long
Dim cbNeeded2 As Long
Dim NumElements2 As Long
Dim Modules(1 To 255) As Long
Dim lRet As Long
Dim ModuleName As String
Dim nSize As Long
Dim hProcess As Long
Dim i As Long
cb = 8
cbNeeded = 96
List1.Clear
'取得所有的进程数,并设置缓冲区的大小
Do While cb <= cbNeeded
cb = cb * 2
ReDim Preserve ProcessIDs((cb / 4)) As Long
lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded)
Loop
NumElements = cbNeeded / 4
'取得进程数
For i = 1 To NumElements
'取得一个进程的句柄
'使用OpenProcess函数打开句柄,其中的两个常量在winnt.h中可以找到相应的声明。
hproess = 0
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessIDs(i))

'如果句柄有效,则
If hProcess <> 0 Then
lRet = EnumProcessModules(hProcess, Modules(1), 255, cbNeeded2)

'如果模式有效,则取得它得文件名
If lRet <> 0 Then
'按照我刚才说的,给他一个最大的空间!
ModuleName = Space(255)
nSize = 255
lRet = GetModuleFileNameExA(hProcess, Modules(1), ModuleName, 255)
List1.AddItem hProcess & " " & ModuleName
End If
End If
Next
'最后一步,别忘记关闭句柄
lRet = CloseHandle(hProcess)
End Sub
captainivy 2004-01-04
  • 打赏
  • 举报
回复
关注一下

很想了解
GetWindowPos 2003-10-31
  • 打赏
  • 举报
回复
为何在WIN2000中
获得的中文进程为乱码?
flc 2003-10-31
  • 打赏
  • 举报
回复
studying
accp258 2003-10-31
  • 打赏
  • 举报
回复
TO:群子
   为什么我只能看到打开的浏览器标题,而例如打开一个幻灯片应用程序或QQ等等,都看不到标题呢?
   请您赐教!
   在线等待!
lxqlogo0 2003-10-30
  • 打赏
  • 举报
回复
'这个程序演示怎样获得当前运行的所有窗口、模块、程序的列表
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_CLOSE = &H10
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

'该函数是EnumWindows的回调函数,EnumWindows函数将遍历的窗口句柄传递到hwnd参数中
Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim astr As String * 256
Dim l As Long

l = GetWindowText(hwnd, astr, Len(astr)) '得到窗口的标题
If InStr(astr, " ") > 1 Then
If InStr(1, astr, "Microsoft Internet Explorer", vbTextCompare) <> 0 Then
Form1.List1.AddItem astr

End If
End If
EnumWindowsProc = True
End Function


Private Sub CWindow_Click()
Dim l As Long, hwnd As Long

List1.Clear
'遍历所有的窗口
l = EnumWindows(AddressOf EnumWindowsProc, 0)


End Sub
vcar 2003-10-30
  • 打赏
  • 举报
回复
在win9x可以,在win2000/xp下使用psapi.dll
likeprogrammer 2003-10-30
  • 打赏
  • 举报
回复
Dim my As PROCESSENTRY32
Dim l As Long
If opnProgram.Value = True Then ' µ±Ñ¡Ôñ³ÌÐòʱ...
Dim l1 As Long
List2.Clear
l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If l Then
my.dwSize = 1060
If (Process32First(l, my)) Then ' ±éÀúµÚÒ»¸ö½ø³Ì
Do
List2.AddItem (Trim(my.szExeFile))
Loop Until (Process32Next(l, my) < 1) ' ±éÀúËùÓнø³ÌÖ±µ½·µ»ØÖµÎªFalse
End If
l1 = CloseHandle(l)
End If
ElseIf opnModule.Value = True Then ' µ±Ñ¡ÔñÄ£¿éʱ...
Dim mm As MODULEENTRY32
Dim lm As Long
List2.Clear
l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If l > 0 Then
my.dwSize = Len(my)
If Process32First(l, my) Then
Do
lm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, my.th32ProcessID) ' »ñµÃ½ø³ÌµÄ±êʶ·û
If lm > 0 Then
mm.dwSize = Len(mm)
If Module32First(lm, mm) Then
Do
If my.th32ProcessID = mm.th32ProcessID Then
List2.AddItem Trim(mm.szExePath) + " " + Str$(mm.modBaseSize)
End If
Loop Until (Module32Next(lm, mm) < 1)
End If
CloseHandle (lm)
End If
Loop Until (Process32Next(l, my) < 1)
End If
CloseHandle (l)
End If
ElseIf opnWindow.Value = True Then ' µ±Ñ¡Ôñ´°¿Úʱ
List2.Clear
l = EnumWindows(AddressOf EnumWindowsProc, 0) ' ±éÀúËùÓеĴ°¿Ú
End If

7,789

社区成员

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

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