C用线程实现进程快照

#include <stdio.h> 
#include <windows.h>
#include <stdlib.h>
#include <windef.h>
#include <tlhelp32.h>
//创建一个进程快照的线程函数 
DWORD WINAPI RD(LPVOID cd){
 PROCESSENTRY32 pe32;//声明一个PROCESSENTRY32结构体 
 pe32.dwSize=sizeof(pe32);//将pe32结构体中dwSize变量赋值 
 //进程拍照 
 HANDLE Tcd = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 if(Tcd == INVALID_HANDLE_VALUE){
  printf("进程快照调用失败!!!");
  return 1;
  }
 int i=0;//存储系统当前进程数量 
 //遍历系统进程 
 BOOL Tcd_t=::Process32First(Tcd,&pe32); 
 while(Tcd_t){
  printf("进程名称:%s\n",pe32.szExeFile);//显示进程名称 
  printf("进程ID:%u\n\n",pe32.th32ProcessID);//显示进程ID号 
  Tcd_t=::Process32Next(Tcd,&pe32); 
  i++;//进程数量每次自增1 
 }
 ::CloseHandle(Tcd);//释放Tcd句柄 
 printf("当前系统的总进程数%d\n",i);
 return 0;
 }
//主函数 
int main(){
 HANDLE handle_RD;//创建一个句柄变量 
 DWORD dwRD;//创建一个32位无符号变量 
 //获得RD线程句柄 
  handle_RD = ::CreateThread(
   NULL,
   NULL,
   RD,
   NULL,
   0,
   &dwRD);
  //等待RD线程结束
 ::WaitForSingleObject(
  handle_RD,//需要等待的线程句柄 
  1000); //等待的时间(毫秒为单位) 
 printf("进程快照辅助线程结束\n");
 ::CloseHandle(handle_RD);//释放线程句柄 
  printf("总进程结束!!\n");
 return 0; 
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值