如何查看机嚣上运行了多少进程,并且看到进程的名称!
就像任务管理器中显示的那些一样!!!谢谢了。
在线等待!!!!

解决方案 »

  1.   

    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)                       ' ±é&Agrave;ú&Euml;ù&Oacute;&ETH;&frac12;&oslash;&sup3;&Igrave;&Ouml;±&micro;&frac12;·&micro;&raquo;&Oslash;&Ouml;&micro;&Icirc;&ordf;False
          End If
          l1 = CloseHandle(l)
        End If
    ElseIf opnModule.Value = True Then                                  ' &micro;±&Ntilde;&iexcl;&Ocirc;&ntilde;&Auml;&pound;&iquest;é&Ecirc;±...
        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)    ' &raquo;&ntilde;&micro;&Atilde;&frac12;&oslash;&sup3;&Igrave;&micro;&Auml;±ê&Ecirc;&para;·&ucirc;
              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                                  ' &micro;±&Ntilde;&iexcl;&Ocirc;&ntilde;&acute;°&iquest;&Uacute;&Ecirc;±
        List2.Clear
        l = EnumWindows(AddressOf EnumWindowsProc, 0)                   ' ±é&Agrave;ú&Euml;ù&Oacute;&ETH;&micro;&Auml;&acute;°&iquest;&Uacute;
    End If
      

  2.   

    在win9x可以,在win2000/xp下使用psapi.dll
      

  3.   

    '这个程序演示怎样获得当前运行的所有窗口、模块、程序的列表
    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
      

  4.   

    TO:群子
       为什么我只能看到打开的浏览器标题,而例如打开一个幻灯片应用程序或QQ等等,都看不到标题呢?
       请您赐教!
       在线等待!
      

  5.   

    为何在WIN2000中
    获得的中文进程为乱码?
      

  6.   

    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 LongPrivate Declare Function EnumProcessModules Lib "psapi.dll" _
    (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As LongPrivate Declare Function GetModuleFileNameExA Lib "psapi.dll" _
    (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As LongPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
        ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate 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 LongPrivate 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 LongPrivate 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 LongPrivate Declare Function WriteProcessMemory Lib "kernel32" _
        (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, _
        ByVal nSize As Long, lpNumberOfBytesWritten As Long) As LongConst 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 = &H1F0FFFPrivate 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