CreateToolhelp32Snapshot()函数的使用
来源:互联网 发布:caservice是什么软件 编辑:程序博客网 时间:2024/05/16 05:35
CreateToolhelp32Snapshot
CreateToolhelp32Snapshot函数为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。
HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
);
参数:
dwFlags
[输入]指定快照中包含的系统内容,这个参数能够使用下列数值(变量)中的一个。
TH32CS_INHERIT - 声明快照句柄是可继承的。
TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。
TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。
TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。
TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
th32ProcessID
[输入]指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST,TH32CS_SNAPMODULE,TH32CS_SNAPMODULE32或TH32CS_SNAPALL后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。
返回值:
调用成功,返回快照的句柄,调用失败,返回INVAID_HANDLE_VALUE。
备注:
使用GetLastError函数查找该函数产生的错误状态码。
要删除快照,使用CloseHandle函数
delphi使用实例:
uses TLHelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
ProcessName: string;
ProcessID: integer;
ListLoop: Boolean;
FsnapShotHandle: Thandle;
FProcessEntry32: TProcessEntry32;
begin
Fsnapshothandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwsize := SizeOF(FProcessEntry32);
Listloop := Process32First(FSnapshotHandle, FProcessEntry32);
while Listloop do begin
ProcessName := FprocessEntry32.szExeFile;
ProcessID := FProcessEntry32.th32ProcessID;
// 我写到列表框中了,你可以根据需要自己改
listbox1.Items.Add('Process NAME:' + ProcessNAme);
ListLoop := Process32Next(FSnapshotHandle, FprocessEntry32);
end;
end;
VB使用实例:
Private Type PROCESSENTRY32
dwSize As Long
cntUseage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
swFlags As Long
szExeFile As String * 1024
End Type
Private sub demo()
Dim MySnapHandle As Long
Dim ProcessInfo As PROCESSENTRY32
MySnapHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
ProcessInfo.dwSize = Len(ProcessInfo)
If Process32First(MySnapHandle, ProcessInfo) <> 0 Then
Do
If Left(LCase(ProcessInfo.szExeFile), InStr(ProcessInfo.szExeFile, ".") + 3) = "notepad.exe" Then
'遍历进程,查找notepad.exe,找到后执行操作.......
End If
Loop While Process32Next(MySnapHandle, ProcessInfo) <> 0
End If
CloseHandle MySnapHandle
end sub
C++列子:
#include "StdAfx.h"
#include "windows.h"
#include "tlhelp32.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
PROCESSENTRY32 pe32;
//在使用这个结构前,先设置它的大小
pe32.dwSize = sizeof(pe32);
//给系统内所有的进程拍个快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot 调用失败./n");
return -1;
}
//遍历进程快照,轮流显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while (bMore)
{
printf("进程名称:%s/n",pe32.szExeFile);
printf("进程ID:%u/n/n",pe32.th32ProcessID);
bMore = ::Process32Next(hProcessSnap,&pe32);
}
//不要忘记清除掉snapshot对象
::CloseHandle(hProcessSnap);
return 0;
}
HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
);
参数:
dwFlags
[输入]指定快照中包含的系统内容,这个参数能够使用下列数值(变量)中的一个。
TH32CS_INHERIT - 声明快照句柄是可继承的。
TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。
TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。
TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。
TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
th32ProcessID
[输入]指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST,TH32CS_SNAPMODULE,TH32CS_SNAPMODULE32或TH32CS_SNAPALL后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。
返回值:
调用成功,返回快照的句柄,调用失败,返回INVAID_HANDLE_VALUE。
备注:
使用GetLastError函数查找该函数产生的错误状态码。
要删除快照,使用CloseHandle函数
delphi使用实例:
uses TLHelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
ProcessName: string;
ProcessID: integer;
ListLoop: Boolean;
FsnapShotHandle: Thandle;
FProcessEntry32: TProcessEntry32;
begin
Fsnapshothandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwsize := SizeOF(FProcessEntry32);
Listloop := Process32First(FSnapshotHandle, FProcessEntry32);
while Listloop do begin
ProcessName := FprocessEntry32.szExeFile;
ProcessID := FProcessEntry32.th32ProcessID;
// 我写到列表框中了,你可以根据需要自己改
listbox1.Items.Add('Process NAME:' + ProcessNAme);
ListLoop := Process32Next(FSnapshotHandle, FprocessEntry32);
end;
end;
VB使用实例:
Private Type PROCESSENTRY32
dwSize As Long
cntUseage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
swFlags As Long
szExeFile As String * 1024
End Type
Private sub demo()
Dim MySnapHandle As Long
Dim ProcessInfo As PROCESSENTRY32
MySnapHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
ProcessInfo.dwSize = Len(ProcessInfo)
If Process32First(MySnapHandle, ProcessInfo) <> 0 Then
Do
If Left(LCase(ProcessInfo.szExeFile), InStr(ProcessInfo.szExeFile, ".") + 3) = "notepad.exe" Then
'遍历进程,查找notepad.exe,找到后执行操作.......
End If
Loop While Process32Next(MySnapHandle, ProcessInfo) <> 0
End If
CloseHandle MySnapHandle
end sub
C++列子:
#include "StdAfx.h"
#include "windows.h"
#include "tlhelp32.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
PROCESSENTRY32 pe32;
//在使用这个结构前,先设置它的大小
pe32.dwSize = sizeof(pe32);
//给系统内所有的进程拍个快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot 调用失败./n");
return -1;
}
//遍历进程快照,轮流显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while (bMore)
{
printf("进程名称:%s/n",pe32.szExeFile);
printf("进程ID:%u/n/n",pe32.th32ProcessID);
bMore = ::Process32Next(hProcessSnap,&pe32);
}
//不要忘记清除掉snapshot对象
::CloseHandle(hProcessSnap);
return 0;
}
- CreateToolhelp32Snapshot()函数的使用
- windows下进程快照CreateToolhelp32Snapshot()函数的使用
- CreateToolhelp32Snapshot函数的头文件
- CreateToolhelp32Snapshot函数
- CreateToolhelp32Snapshot函数
- 使用CreateToolHelp32Snapshot函数列出所有进程
- CreateToolhelp32Snapshot 进程快照函数的应用实例
- 使用CreateToolhelp32Snapshot获取指定进程详细信息的方法
- CreateToolHelp32Snapshot函数获取系统快照
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- Linux下报“error while loading shared libraries: libncurses.so.4...”错误的解决方法
- 电信189陆续放号 做强“天翼”成明年战略重点
- 红外线探测报警器的简单设计
- [双语阅读]奥巴马获选《时代》年度人物 张艺谋入围
- SQL UPDATE REPLACE
- CreateToolhelp32Snapshot()函数的使用
- 非诚勿扰:从冯氏喜剧看回归历程
- [双语阅读]英老师称圣诞老人不存在 引学生大哭
- 能修改IE地址栏关键字键入搜索的默认搜索引擎?
- 字符串的拼接
- FIT AND FITNESSE(1)
- [双语阅读]调查:近一半女性宁愿不XX也要上网
- Oracle日期函数(二)
- UltimateDefrag