王朝百科
分享
 
 
 

CreateToolhelp32Snapshot

王朝百科·作者佚名  2010-01-07  
宽屏版  字体: |||超大  

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_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 调用失败.

");

return -1;

}

//遍历进程快照,轮流显示每个进程的信息

BOOL bMore = ::Process32First(hProcessSnap,&pe32);

while (bMore)

{

printf("进程名称:%s

",pe32.szExeFile);

printf("进程ID:%u

",pe32.th32ProcessID);

bMore = ::Process32Next(hProcessSnap,&pe32);

}

//不要忘记清除掉snapshot对象

::CloseHandle(hProcessSnap);

return 0;

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有