1. Create a new Standard Exe project in Visual Basic. Form1 is created by default. 2. Add a CommandButton to Form1. 3. Add a ListBox to Form1. 4. Copy the following code to Form1:
Option Explicit
Private Sub Command1_Click() List1.Clear Select Case getVersion()
Case 1 'Windows 95/98
Dim f As Long, sname As String Dim hSnap As Long, proc As PROCESSENTRY32 hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) If hSnap = hNull Then Exit Sub proc.dwSize = Len(proc) ' Iterate through the processes f = Process32First(hSnap, proc) Do While f sname = StrZToStr(proc.szExeFile) List1.AddItem sname f = Process32Next(hSnap, proc) Loop
Case 2 'Windows NT
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 200) As Long Dim lRet As Long Dim ModuleName As String Dim nSize As Long Dim hProcess As Long Dim i As Long 'Get the array containing the process id's for each process object cb = 8 cbNeeded = 96 Do While cb <= cbNeeded cb = cb * 2 ReDim ProcessIDs(cb / 4) As Long lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded) Loop NumElements = cbNeeded / 4
For i = 1 To NumElements 'Get a handle to the Process hProcess = OpenProcess(PROCESS_QUERY_INFORMATION _ Or PROCESS_VM_READ, 0, ProcessIDs(i)) 'Got a Process handle If hProcess <> 0 Then 'Get an array of the module handles for the specified 'process lRet = EnumProcessModules(hProcess, Modules(1), 200, _ cbNeeded2) 'If the Module Array is retrieved, Get the ModuleFileName If lRet <> 0 Then ModuleName = Space(MAX_PATH) nSize = 500 lRet = GetModuleFileNameExA(hProcess, Modules(1), _ ModuleName, nSize) List1.AddItem Left(ModuleName, lRet) End If End If 'Close the handle to the process lRet = CloseHandle(hProcess) Next
End Select End Sub
5. Add a Standard Module to the Project. Module1 is created. 6. Paste the following code into Module1.
Public Declare Function Process32First Lib "kernel32" ( _ ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function Process32Next Lib "kernel32" ( _ ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function CloseHandle Lib "Kernel32.dll" _ (ByVal Handle As Long) As Long
Public Declare Function OpenProcess Lib "Kernel32.dll" _ (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, _ ByVal dwProcId As Long) As Long
Public Declare Function EnumProcesses Lib "psapi.dll" _ (ByRef lpidProcess As Long, ByVal cb As Long, _ ByRef cbNeeded As Long) As Long
Public Declare Function GetModuleFileNameExA Lib "psapi.dll" _ (ByVal hProcess As Long, ByVal hModule As Long, _ ByVal ModuleName As String, ByVal nSize As Long) As Long
Public Declare Function EnumProcessModules Lib "psapi.dll" _ (ByVal hProcess As Long, ByRef lphModule As Long, _ ByVal cb As Long, ByRef cbNeeded As Long) As Long
Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" ( _ ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Public Declare Function GetVersionExA Lib "kernel32" _ (lpVersionInformation As OSVERSIONINFO) As Integer
Public Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long ' This process th32DefaultHeapID As Long th32ModuleID As Long ' Associated exe cntThreads As Long th32ParentProcessID As Long ' This process's parent process pcPriClassBase As Long ' Base priority of process threads dwFlags As Long szExeFile As String * 260 ' MAX_PATH End Type
Public Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long '1 = Windows 95. '2 = Windows NT
szCSDVersion As String * 128 End Type
Public Const PROCESS_QUERY_INFORMATION = 1024 Public Const PROCESS_VM_READ = 16 Public Const MAX_PATH = 260 Public Const STANDARD_RIGHTS_REQUIRED = &HF0000 Public Const SYNCHRONIZE = &H100000 'STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF Public Const PROCESS_ALL_ACCESS = &H1F0FFF Public Const TH32CS_SNAPPROCESS = &H2& Public Const hNull = 0
Function StrZToStr(s As String) As String StrZToStr = Left$(s, Len(s) - 1) End Function
Public Function getVersion() As Long Dim osinfo As OSVERSIONINFO Dim retvalue As Integer osinfo.dwOSVersionInfoSize = 148 osinfo.szCSDVersion = Space$(128) retvalue = GetVersionExA(osinfo) getVersion = osinfo.dwPlatformId End Function
7. Run the project and click the Command button on Form1. You should see a listing of the currently running processes. 8. If you are running Windows 95/98, try running the example project on Windows NT or vice versa. The processes should be listed regardless of operating system version.
Source : MicrosoftLabels: basic, list, processes, running, visual |
好秘书 中国呼吸网 肿瘤网 中国皮肤网 癌症康复网 中国公文网 工作总结 个人工作总结 半年工作总结 年终工作总结 单位工作总结 教师工作总结 教学工作总结 学校工作总结 德育工作总结 财务工作总结 医务工作总结 安全工作总结 乡镇工作总结 党员工作总结 团委工作总结 公司工作总结 实习工作总结 班主任工作总结 党支部工作总结 办公室工作总结 学生会工作总结 工作报告 政府报告 述职报告 述职述廉 考察报告 自查报告 情况报告 调研报告 调查报告 申请报告 辞职报告 实习报告 验收报告 评估报告 工作汇报 思想汇报 汇报材料 情况通报 情况汇报 心得体会 学习体会 工作体会 培训体会 读后感 领导讲话 庆典致辞 节日致辞 开业开幕 演讲稿 竞聘演讲 就职演讲 比赛演讲 征文演讲 节日演讲 演讲技巧 工作意见 活动策划 工作方案 整改方案 实施方案 企划文案 营销方案 培训方案 应急预案 规章制度 法律法规 事迹材料 先进事迹 个人事迹 申报材料 学习材料 考察材料 经验材料 交流材料 自我鉴定 工作计划 工作规划 年度工作计划 学校工作计划 个人工作计划 团委工作计划 工会工作计划 单位工作计划 党支部工作计划 民主生活会 入党志愿书 入党申请书 入团申请书 转正申请书 党性分析材料 先教活动 整改措施 剖析材料 公告通知 模板范例 贺电贺词 常用书信 合同范本 社交礼仪 法律文书 论文