X 我知道了TIPS:左右滑动导航栏可以查看更多栏目
这个VC语句是什么意思PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) }; 这个语句是什么意思,它符合C++标准么?如果不符合C++标准,它应该怎么改?
>> 本文固定链接: http://www.vcgood.com/archives/493
>> 转载请注明: lisypro 2006年02月23日 于 C语言帝国 发表
这。。。这。。没见过这么写变量定义的。
PROCESSENTRY32 pe32 = sizeof(PROCESSENTRY32) ;
改成这样写的话。这句话不就是在计算 PROCESSENTRY32的存储空间的大小么?
可以!不过最好写成!PROCESSENTRY32 pe32 = (sizeof(PROCESSENTRY32));
其他的定义也可以写成这样的类型!
#define DPATH (“C:\\windows\\”)
xstar38772.0076041667
pe32 这个变量被初始化成什么了?清空还是什么
怎么没有回答
int iLen = { sizeof( int ) };这样是可以的!iLen = 4;
PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) }; 比较奇怪!除非PROCESSENTRY32是int型的!否则会出错的!
但查询的结果是:typedef struct tagPROCESSENTRY32 { DWORD dwSize; // 结构大小; DWORD cntUsage; // 此进程的引用计数; DWORD th32ProcessID; // 进程ID; DWORD th32DefaultHeapID; // 进程默认堆ID; DWORD th32ModuleID; // 进程模块ID; DWORD cntThreads; // 此进程开启的线程计数; DWORD th32ParentProcessID; // 父进程ID; LONG pcPriClassBase; // 线程优先权; DWORD dwFlags; // 保留; char szExeFile[MAX_PATH]; // 进程全名; } PROCESSENTRY32;
你上面的那段代码不知是要做什么?如果得到长度的话是:int iPE32len = sizeof( PROCESSENTRY32 );
以上的结构的用法如下:得到相关的进程信息。 两个函数原型声明如下:
BOOL WINAPI Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);BOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);
下面给出一个简单的应用示例。在此示例中将枚举出系统的所有进程,并获取各进程的标识号和相应程序的绝对路径,进程标识号在下一步对进程的管理中将要用到,程序路径则直接通过列表控件显示出来:
// PROCESSENTRY32结构对象PROCESSENTRY32 pe;// 创建快照句柄HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);// 先搜索系统中第一个进程的信息Process32First(hSnapshot, &pe);// 下面对系统中的所有进程进行枚举,并保存其信息do{// 把进程对应的文件路径名填入列表框int index = m_ctlwndList.AddString(pe.szExeFile);// 设置列表框中该项的Data相应的进程的ID号,利于以后终止该进程m_ctlwndList.SetItemData(index, pe.th32ProcessID);} while (Process32Next(hSnapshot, &pe));// 关闭快照句柄CloseHandle(hSnapshot);
BTW:提问题前先想清楚:所提的问题是什么?别人能不能从你的问题中获取到足够的信息?同时最好能把你的思路写出来!这样方便别人分析你的问题!
xstar38777.5097106481
你必须先 登录才能发表评论。
这。。。这。。没见过这么写变量定义的。
PROCESSENTRY32 pe32 = sizeof(PROCESSENTRY32) ;
改成这样写的话。这句话不就是在计算 PROCESSENTRY32的存储空间的大小么?
可以!
不过最好写成!
PROCESSENTRY32 pe32 = (sizeof(PROCESSENTRY32));
其他的定义也可以写成这样的类型!
#define DPATH (“C:\\windows\\”)
pe32 这个变量被初始化成什么了?清空还是什么
怎么没有回答
int iLen = { sizeof( int ) };
这样是可以的!iLen = 4;
PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) }; 比较奇怪!
除非PROCESSENTRY32是int型的!否则会出错的!
但查询的结果是:
typedef struct tagPROCESSENTRY32 {
DWORD dwSize; // 结构大小;
DWORD cntUsage; // 此进程的引用计数;
DWORD th32ProcessID; // 进程ID;
DWORD th32DefaultHeapID; // 进程默认堆ID;
DWORD th32ModuleID; // 进程模块ID;
DWORD cntThreads; // 此进程开启的线程计数;
DWORD th32ParentProcessID; // 父进程ID;
LONG pcPriClassBase; // 线程优先权;
DWORD dwFlags; // 保留;
char szExeFile[MAX_PATH]; // 进程全名;
} PROCESSENTRY32;
你上面的那段代码不知是要做什么?如果得到长度的话是:
int iPE32len = sizeof( PROCESSENTRY32 );
以上的结构的用法如下:
得到相关的进程信息。 两个函数原型声明如下:
BOOL WINAPI Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
BOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);
下面给出一个简单的应用示例。在此示例中将枚举出系统的所有进程,并获取各进程的标识号和相应程序的绝对路径,进程标识号在下一步对进程的管理中将要用到,程序路径则直接通过列表控件显示出来:
// PROCESSENTRY32结构对象
PROCESSENTRY32 pe;
// 创建快照句柄
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
// 先搜索系统中第一个进程的信息
Process32First(hSnapshot, &pe);
// 下面对系统中的所有进程进行枚举,并保存其信息
do{
// 把进程对应的文件路径名填入列表框
int index = m_ctlwndList.AddString(pe.szExeFile);
// 设置列表框中该项的Data相应的进程的ID号,利于以后终止该进程
m_ctlwndList.SetItemData(index, pe.th32ProcessID);
} while (Process32Next(hSnapshot, &pe));
// 关闭快照句柄
CloseHandle(hSnapshot);
BTW:提问题前先想清楚:所提的问题是什么?别人能不能从你的问题中获取到足够的信息?同时最好能把你的思路写出来!这样方便别人分析你的问题!