高手帮看看!谢谢!新建 1个 listbox 控件,命名 list1
代码如下Option Explicit
Private Const max_path = 260
Private Type processentry32
     dwsize As Long
     cntusage As Long
     th32DefaultheapID As Long
     th32moduleID As Long
     cntthreads As Long
     th32parentprocessID As Long
     pcpriclassbase As Long
     dwflage As Long
     szexefile As String * max_path
End Type
Private Declare Function closehandle Lib " kernel32 " (ByVal hobject As Long) As Long
Private Declare Function createtoolhelp32snapshot Lib "kernel" (ByVal dwflage As Long, ByVal th32processid As Long) As Long
Private Declare Function process32first Lib "kernel" (ByVal hsnapshot As Long, lppe As Any) As Long
Private Declare Function process32next Lib "kernel32" (ByVal hsnapshot As Long, lppe As Any) As Long
Private Const th32cs_snapheaplist = &H1
Private Const th32cs_snapprocess = &H2
Private Const th32cs_snapthread = &H4
Private Const th32cs_snapmodule = &H8
Private Const th32cs_snapall = (th32cs_snapheaplist + th32cs_snapprocess + th32cs_snapthread + th32cs_snapmodule)
Private Const th32cs_inherit = &H80000000Private Sub from_load()
Dim hsnapshot As Long, lRet As Long, P As processentry32
P.dwsize = Len(P)
hsnapshot = createtoolhelp32snapshot(th32cs_snapall, ByVal 0)
If hsnapshot Then
lRet = process32first(hsnapshot, P)
Do While lRet
     List1.AddItem Left$(P.szexefile, InStr(P.szexefile, Chr$(0)) - 1)
lRet = process32next(hsnapshot, P)
Loop
lRet = closehandle(hsnapshot)
End IfEnd Sub

解决方案 »

  1.   

    这不像是编程,倒有点像找错题,楼主不会说你的代码是从哪篇文章中复制过来的吧?我不太相信会有VB文章中错误这么多的,估计是看哪本书自己手工输入的吧?建议,先把所有API函数与结构声明重新核对一遍,问题就解决了。
      

  2.   

    用这个试试
    Dim theloop As Long, snap As Long
    Dim Proc As PROCESSENTRY32
        snap = CreateToolhelp32Snapshot(TH32CS_SNAPall, 0) '获得进程"快照"的句柄
        Proc.dwSize = Len(Proc)
        theloop = Process32First(snap, Proc)  '获取第一个进程,并得到其返回值
        While theloop <> 0 '当返回值非零时继续获取下一个进程
            List1.AddItem Proc.szExeFile
            theloop = Process32Next(snap, Proc)
        Wend
    CloseHandle snap '关闭进程"快照"句柄