社区
API
帖子详情
SizeOf(THREADENTRY32)
zxsean
2009-07-24 07:28:14
我现在只知道sizeof可以使用len来替代从而获取变量所需空间大小,那么这个怎么办??→→→xxx=SizeOf(THREADENTRY32)
...全文
152
6
打赏
收藏
SizeOf(THREADENTRY32)
我现在只知道sizeof可以使用len来替代从而获取变量所需空间大小,那么这个怎么办??→→→xxx=SizeOf(THREADENTRY32)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
贝隆
2009-07-27
打赏
举报
回复
学习了。
嗷嗷叫的老马
2009-07-27
打赏
举报
回复
............对哦,我没注意...
Sandrer
2009-07-27
打赏
举报
回复
[Quote=引用 2 楼 myjian 的回复:]
xxx=len(THREADENTRY32)
[/Quote]
终于看到老马犯傻啦!!!
VB中不能直接 Len(类型名)
只能 Len(变量)
myjisgreat
2009-07-27
打赏
举报
回复
sizeof 不是 c的吗?
嗷嗷叫的老马
2009-07-24
打赏
举报
回复
xxx=len(THREADENTRY32)
SYSSZ
2009-07-24
打赏
举报
回复
sizeof?VB有这种东东?
Delphi 线程枚举的简单例子.rar
Delphi 线程枚举的简单例子,可能和CPU线程有关系,线程越多的情况下,枚举到的线程也越多。线程是如何获取的,这个枚举的例子会告诉你方法。
如何获取系统指定进程线程信息
如何获取系统指定进程线程信息编程小程序,C++.net源代码编写,VisualStudio.net
获取qq进程的所有信息(源码只为初学者)
获取qq进程与线程的信息,只为初学者,我也是初学的,自己制作了这个小工具,方便初学者学习
枚举线程,基于Delphi编写..rar
枚举线程,基于Delphi编写..rar
Windows 2000 Native API 电子书的源代码 [评价可免费]
首先关于 [评价可免费] 的严重声明: 一、评价=评论加评价(评星星); 二、评价必须是下载完了该资源后的评价,没下载就评论无效; 三、如果正确评价了,返还积分可能需要等等,系统需要反应下。呵呵 评论时记得要评分。然后会返回给你花费的分再加1分.理论上有十分就可以下载完所有的资源了。一般人我不告诉他。 Example 1.1: A Partial ToolHelp Library Implementation #include “ntdll.h” #include
#include
struct ENTRIES { ULONG Offset; ULONG Count; ULONG Index; ENTRIES() : Offset(0), Count(0), Index(0) {} ENTRIES(ULONG m, ULONG n) : Offset(m), Count(n), Index(0) {} }; enum EntryType { ProcessType,
Thread
Type, MaxType }; NT::PSYSTEM_PROCESSES GetProcessesAnd
Thread
s() { ULONG n = 0x100; NT::PSYSTEM_PROCESSES sp = new NT::SYSTEM_PROCESSES[n]; while (NT::ZwQuerySystemInformation( NT::SystemProcessesAnd
Thread
sInformation, sp, n *
sizeof
*sp, 0) == STATUS_INFO_LENGTH_MISMATCH) delete [] sp, sp = new NT::SYSTEM_PROCESSES[n = n * 2]; return sp; } ULONG ProcessCount(NT::PSYSTEM_PROCESSES sp) { ULONG n = 0; bool done = false; for (NT::PSYSTEM_PROCESSES p = sp; !done; p = NT::PSYSTEM_PROCESSES(PCHAR(p) + p->NextEntryDelta)) n++, done = p->NextEntryDelta == 0; return n; } ULONG
Thread
Count(NT::PSYSTEM_PROCESSES sp) { ULONG n = 0; bool done = false; for (NT::PSYSTEM_PROCESSES p = sp; !done; p = NT::PSYSTEM_PROCESSES(PCHAR(p) + p->NextEntryDelta)) n += p->
Thread
Count, done = p->NextEntryDelta == 0; return n; } VOID AddProcesses(PPROCESS
ENTRY32
pe, NT::PSYSTEM_PROCESSES sp) { bool done = false; for (NT::PSYSTEM_PROCESSES p = sp; !done; p = NT::PSYSTEM_PROCESSES(PCHAR(p) + p->NextEntryDelta)) { pe->dwSize =
sizeof
*pe; pe->cntUsage = 0; pe->th32ProcessID = p->ProcessId; pe->th32DefaultHeapID = 0; pe->th32ModuleID = 0; pe->cnt
Thread
s = p->
Thread
Count; pe->th32ParentProcessID = p->InheritedFromProcessId; pe->pcPriClassBase = p->BasePriority; pe->dwFlags = 0; sprintf(pe->szExeFile, “%.*ls”, p->ProcessName.Length / 2, p->ProcessName.Buffer); pe++; done = p->NextEntryDelta == 0; } } VOID Add
Thread
s(P
THREAD
ENTRY32
te, NT::PSYSTEM_PROCESSES sp) { bool done = false; for (NT::PSYSTEM_PROCESSES p = sp; !done; p = NT::PSYSTEM_PROCESSES(PCHAR(p) + p->NextEntryDelta)) { for (ULONG i = 0; i < p->
Thread
Count; i++) { te->dwSize =
sizeof
*te; te->cntUsage = 0; te->th32
Thread
ID = DWORD(p->
Thread
s[i].ClientId.Unique
Thread
); te->th32OwnerProcessID = p->ProcessId; te->tpBasePri = p->
Thread
s[i].BasePriority; te->tpDeltaPri = p->
Thread
s[i].Priority - p->
Thread
s[i].BasePriority; te->dwFlags = 0; te++; } done = p->NextEntryDelta == 0; } } template
BOOL GetEntry(HANDLE hSnapshot, T entry, bool first, EntryType type) { ENTRIES *entries = (ENTRIES*)MapViewOfFile(hSnapshot, FILE_MAP_WRITE, 0, 0, 0); if (entries == 0) return FALSE; BOOL rv = TRUE; entries[type].Index = first ? 0 : entries[type].Index + 1; if (entries[type].Index >= entries[type].Count) SetLastError(ERROR_NO_MORE_FILES), rv = FALSE; if (entry->dwSize <
sizeof
*entry) SetLastError(ERROR_INSUFFICIENT_BUFFER), rv = FALSE; if (rv) *entry = T(PCHAR(entries)+entries[type].Offset)[entries[type].Index]; UnmapViewOfFile(entries); return rv; } HANDLE WINAPI CreateToolhelp32Snapshot(DWORD flags, DWORD) { NT::PSYSTEM_PROCESSES sp = (flags & (TH32CS_SNAPPROCESS | TH32CS_SNAP
THREAD
)) ? GetProcessesAnd
Thread
s() : 0; ENTRIES entries[MaxType]; ULONG n =
sizeof
entries; if (flags & TH32CS_SNAPPROCESS) { entries[ProcessType] = ENTRIES(n, ProcessCount(sp)); n += entries[ProcessType].Count *
sizeof
(PROCESS
ENTRY32
); } if (flags & TH32CS_SNAP
THREAD
) { entries[
Thread
Type] = ENTRIES(n,
Thread
Count(sp)); n += entries[
Thread
Type].Count *
sizeof
(
THREAD
ENTRY32
); } SECURITY_ATTRIBUTES sa = {
sizeof
sa, 0, (flags & TH32CS_INHERIT) != 0}; HANDLE hMap = CreateFileMapping(HANDLE(0xFFFFFFFF), &sa, PAGE_READWRITE | SEC_COMMIT, 0, n, 0); ENTRIES *p = (ENTRIES*)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0); for (int i = 0; i < MaxType; i++) p[i] = entries[i]; if (flags & TH32CS_SNAPPROCESS) AddProcesses(PPROCESS
ENTRY32
(PCHAR(p) + entries[ProcessType].Offset), sp); if (flags & TH32CS_SNAP
THREAD
) Add
Thread
s(P
THREAD
ENTRY32
(PCHAR(p) + entries[
Thread
Type].Offset), sp); UnmapViewOfFile(p); if (sp) delete [] sp; return hMap; } BOOL WINAPI
Thread
32First(HANDLE hSnapshot, P
THREAD
ENTRY32
te) { return GetEntry(hSnapshot, te, true,
Thread
Type); } BOOL WINAPI
Thread
32Next(HANDLE hSnapshot, P
THREAD
ENTRY32
te) { return GetEntry(hSnapshot, te, false,
Thread
Type); } BOOL WINAPI Process32First(HANDLE hSnapshot, PPROCESS
ENTRY32
pe) { return GetEntry(hSnapshot, pe, true, ProcessType); } BOOL WINAPI Process32Next(HANDLE hSnapshot, PPROCESS
ENTRY32
pe) { return GetEntry(hSnapshot, pe, false, ProcessType); }
API
1,488
社区成员
23,276
社区内容
发帖
与我相关
我的任务
API
VB API
复制链接
扫一扫
分享
社区描述
VB API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章