用VB枚举系统进程PID及路径
http://blog.csdn.net/cw198624/archive/2009/02/19/3911759.aspx
添加一个ListBox和一个按钮
Option Explicit
Private Declare Function CloseHandle Lib "kernel32" (ByVal Handle 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 EnumProcesses Lib "psapi" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Private Declare Function EnumProcessModules Lib "psapi" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Private Declare Function GetModuleFileNameExA Lib "psapi" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
'上为函数声明,在此程序中EnumProcessModules为非必要,枚举进程路径,并不需要去枚举进程的模块。
Dim cbNeeded As Long, cbNeeded2 As Long, ProcessIDs(1 To 255) As Long
Dim lRet As Long, ModuleName As String, hProcess As Long
Const PROCESS_QUERY_INFORMATION = &H400
Const PROCESS_VM_READ = &H10
Dim DeskW As Long, DeskH As Long
Private Sub Command1_Click()
Dim ProcessCount As Long, I As Long
List1.Clear
Call EnumProcesses(ProcessIDs(1), 256, cbNeeded) '返回进程PID数组和进程数组大小
ProcessCount = cbNeeded / 4 '计算出进程数
For I = 1 To ProcessCount
hProcess = OpenProcess(&H400 Or &H10, False, ProcessIDs(I))
If hProcess <> 0 Then
ModuleName = Space(255) '为模块名分配空间,这很重要
'模块句柄指针为零默认获取进程名,无需枚举进程模块
lRet = GetModuleFileNameExA(hProcess, 0, ModuleName, 255)
List1.AddItem ProcessIDs(I) & Chr(9) & ModuleName '将进程PID和路径添加到列表框
End If
lRet = CloseHandle(hProcess) '关掉进程句柄
Next
End Sub
2010-02-23
http://www.docin.com/p-1549182.html
相关文档:
使用VC编写VB使用DLL
一、在函数定义前必须加上extern "c",_stdcall关键字。
extern "C" int _stdcall Sum(int x,int y)
{
return x+y;
}
二、DLL的.def文件中必须加上入口函数
EXPORTS
sample @1
  ......
重拾VB之三,二进制文件篇
PMP 关劲松
鬼使神差,09年12月入职的公司仍使用VB开发软件,虽然并非专职开发,但也不得不在事隔4年之后,重新使用VB。
读取、修改二进制文件仍是大部分编程语言的基本开发技能。可以提高处理文件效率,主要应用在通信、交换数据等方面。
'open filena ......
长久以来,由于不能直接获得VB类成员函数指针,因为无法在VB的类模块中直接使用定时器控件或定时器API,基于俺编写的获得类成员函数指针的函数,俺编写了这个带定时器功能的类,希望给朋友们一些启发。
一、新建一个类,类名称为clsTimer,类代码如下:
Option Explicit
'* ** ......
调用方法很简单,在Form中如下书写代码:
Private Sub Form_Load()
SetHotkey 1, "Ctrl,112", "Add" '按 Ctrl+F1 激活指定程序,F1的Ascii码为112
SetHotkey 2, 113, "Add" '按 F2 激活指定程序,F2的Ascii码为113
SetHotkey 3, "Ctrl+Alt,113", "Add" '按 Ctrl+Alt+F2 激活指定程序,F2的Ascii码为113
End Sub
Priva ......