精华内容
下载资源
问答
  • 主要介绍了C++基于CreateToolhelp32Snapshot获取系统进程实例,是Windows应用程序设计中非常实用的技巧,需要的朋友可以参考下
  • CreateToolhelp32Snapshot 函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照. 说到底,可以获取系统中正在运行的进程信息,线程信息,等 函数原型: HANDLE WINAPI ...

    CreateToolhelp32Snapshot

    函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照.
    说到底,可以获取系统中正在运行的进程信息,线程信息,等

    函数原型:

    HANDLE WINAPI CreateToolhelp32Snapshot(
    DWORD dwFlags, //用来指定“快照”中需要返回的对象,可以是TH32CS_SNAPPROCESS等
    DWORD th32ProcessID //一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取 当前进程快照时可以设为0
    );
    

    dwFlags

    指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。
    TH32CS_INHERIT(0x80000000) - 声明快照句柄是可继承的。
    TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
    TH32CS_SNAPHEAPLIST(0x00000001) - 在快照中包含在th32ProcessID中指定的进程的所有的堆。
    TH32CS_SNAPMODULE(0x00000008) - 在快照中包含在th32ProcessID中指定的进程的所有的模块。
    TH32CS_SNAPPROCESS(0x00000002) - 在快照中包含系统中所有的进程。
    TH32CS_SNAPTHREAD(0x00000004) - 在快照中包含系统中所有的线程。
    H32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)

    th32ProcessID

    指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。

    返回值:

    解释
    调用成功,返回快照的句柄,调用失败,返回INVALID_HANDLE_VALUE 。
    备注:
    使用GetLastError函数查找该函数产生的错误状态码。
    注意,在Win NT中,要删除快照,使用CloseHandle函数;在Win CE中,要删除快照,使用CloseToolhelp32Snapshot函数。

    VC++使用实例:
    编辑
    #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("进程名称:%ls\n",pe32.szExeFile); //这里得到的应该是宽字符,用%ls,不然无法正常打印
    printf("进程ID:%u\n\n",pe32.th32ProcessID);
    bMore = ::Process32Next(hProcessSnap,&pe32);
    }
    //不要忘记清除掉snapshot对象
    ::CloseHandle(hProcessSnap);
    return 0;
    }
    
    展开全文
  • CreateToolhelp32Snapshot枚举进程
                   

     
    CreateToolhelp32Snapshot枚举进程 
     
    CreateToolhelp32Snapshot枚举进程
    每一个应用程序实例在运行起来后都会在当前系统下产生一个进程,大多数应用程序均拥有可视界面,用户可以通过标题栏上的关闭按钮关闭程序。但是也有为数不少的在后台运行的程序是没有可视界面的,对于这类应用程序用户只能通过CTRL+ALT+DEL热键呼出"关闭程序"对话框显示出当前系统进程列表,从中可以结束指定的任务。显然,该功能在一些系统监控类软件中还是非常必需的,其处理过程大致可以分为两步:借助系统快照实现对系统当前进程的枚举和根据枚举结果对进程进行管理。本文下面即将对此过程的实现进行介绍。
    当前进程的枚举
    要对当前系统所有已开启的进程进行枚举,就必须首先获得那些加载到内存的进程当前相关状态信息。在Windows操作系统下,这些进程的当前状态信息不能直接从进程本身获取,系统已为所有保存在系统内存中的进程、线程以及模块等的当前状态的信息制作了一个只读副本--系统快照,用户可以通过对系统快照的访问完成对进程当前状态的检测。在具体实现时,系统快照句柄的获取是通过Win32 API函数CreateToolhelp32Snapshot()来完成的,通过该函数不仅可以获取进程快照,而且对于堆、模块和线程的系统快照同样可以获取。
    使用这个函数前必须在头文件里包含tlhelp32.h头文件。
    CreateToolhelp32Snapshot函数为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。
    HANDLE WINAPI CreateToolhelp32Snapshot(
                                           DWORD dwFlags,
                                           DWORD th32ProcessID
                                           );

    参数:其中,参数dwFlags:指定将要创建包含哪一类系统信息的快照句柄,本程序中只需要检索系统进程信息,因此可将其设置为TH32CS_SNAPPROCESS;函数第二个参数th32ProcessID`则指定了进程的标识号,当设置为0时指定当前进程。
    dwFlags
    [输入]指定快照中包含的系统内容,这个参数能够使用下列数值(变量)中的一个。
       TH32CS_INHERIT - 声明快照句柄是可继承的。
       TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
       TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。
       TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。
       TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。
       TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。
    th32ProcessID
    [输入]指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或TH32CS_SNAPMOUDLE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。
    返回值:
    调用成功,返回快照的句柄,调用失败,返回INVAID_HANDLE_VALUE。
    备注:
    使用GetLastError函数查找该函数产生的错误状态码。
    要删除快照,使用CloseHandle函数。
    在得到快照句柄之后只能以只读的方式对其进行访问。至于对系统快照句柄的使用同普通对象句柄的使用并没有什么太大区别,在使用完之后也需要通过CloseHandle()函数将其销毁。

    BOOL Process32First()函数
    参数:HANDLE hSnapshot 传入的Snapshot句柄
    参数:LPPROCESSENTRY32 lppe 指向PROCESSENTRY32结构的指针
    作用:从Snapshot得到第一个进程记录信息

    BOOL Process32Next()函数
    参数:HANDLE hSnapshot 传入的Snapshot句柄
    参数:LPPROCESSENTRY32 lppe 指向PROCESSENTRY32结构的指针
    作用:从Snapshot得到下一个进程记录信息

    BOOL Module32First()函数

    参数:HANDLE hSnapshot传入的Snapshot句柄
    参数:LPMODULEENTRY3 lpme 指向一个 MODULEENTRY32结构的指针
    作用:从Snapshot得到第一个Module记录信息

    BOOL Module32Next()函数
    参数:HANDLE hSnapshot传入的Snapshot句柄
    参数:LPMODULEENTRY3 lpme 指向一个 MODULEENTRY32结构的指针
    作用:从Snapshot得到下一个Module记录信息

    BOOL Thread32First()函数
    参数:HANDLE hSnapshot传入的Snapshot句柄
    参数:LPTHREADENTRY32 lpte指向一个 THREADENTRY32结构的指针
    作用:从Snapshot得到第一个Thread记录信息

    BOOL Thread32Next()函数
    参数:HANDLE hSnapshot传入的Snapshot句柄
    参数:LPTHREADENTRY32 lpte指向一个 THREADENTRY32结构的指针
    作用:从Snapshot得到下一个Thread记录信息

    HANDLE OpenProcess()函数
     参数:DWORD dwDesiredAccess 权限描叙信息
    这里我用到了PROCESS_ALL_ACCESS功能是具有所有权限
    参数:BOOL bInheritHandle 确定该句柄是否可以被程继承
    参数:dwPrcessID 进程ID号
    作用:打开一个存在的进程对象

    列举进程
    在得到系统的快照句柄后,就可以对当前进程的标识号进行枚举了,通过这些枚举出的进程标识号可以很方便的对进程进行管理。进程标识号通过函数Process32First() 和 Process32Next()而得到,这两个函数可以枚举出系统当前所有开启的进程,并且可以得到相关的进程信息。 这两个函数原型声明如下:
          BOOL WINAPI Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
          BOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);
       以上两个函数分别用于获得系统快照中第一个和下一个进程的信息,并将获取得到的信息保存在指针lppe所指向的PROCESSENTRY32结构中。函数第一个参数hSnapshot为由CreateToolhelp32Snapshot()函数返回得到的系统快照句柄;第二个参数lppe为指向结构PROCESSENTRY32的指针,PROCESSENTRY32结构可对进程作一个较为全面的描述,其定义如下:
          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;
        以上三个API函数均在头文件tlhelp32.h中声明,运行时需要有kernel32.lib库的支持。通过这三个函数可以枚举出当前系统已开启的所有进程,并可获取到进程的各相关信息。
           
    例子:
    #i nclude <windows.h>
     #i nclude <tlhelp32.h>
     #i nclude <iostream>

     int main( )
     {
      // 现在我们将利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照
      //这个函数返回包含正在运行进程的快照句柄。
      //他的原形是:
      // HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID);
      // 我们将dwFlags设为TH32CS_SNAPPROCESS,th32ProcessID置为0。

      HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

        //现在我们获得了所有进程的信息。
     //将从hSnapShot中抽取数据到一个PROCESSENTRY32结构中
     //这个结构代表了一个进程,是ToolHelp32 API的一部分。
     //抽取数据靠Process32First()和Process32Next()这两个函数。
     
      //这里我们仅用Process32Next(),他的原形是:
      //BOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);
      //我们程序的代码中加入:

      PROCESSENTRY32* processInfo=new PROCESSENTRY32;

      // 必须设置PROCESSENTRY32的dwSize成员的值 ;

      processInfo->dwSize=sizeof(PROCESSENTRY32);
      int index=0;

      //这里我们将快照句柄和PROCESSENTRY32结构传给Process32Next()。
     //执行之后,PROCESSENTRY32 结构将获得进程的信息。我们循环遍历,直到函数返回FALSE。

    printf("****************开始列举进程****************/n");
    while(Process32Next(hSnapShot,processInfo)!=FALSE)
     {
    index++;
    printf("******************  %d  ******************/n",index);
    printf("PID       Name      Current Threads/n");
    printf("%-15d%-25s%-4d/n",processInfo->th32ProcessID,processInfo->szExeFile,processInfo->cntThreads);
     }

        CloseHandle(hSnapShot);
        printf("****************进程列举结束****************/n");


      int processID;
      HANDLE hProcess;

     printf("Enter Process ID to terminate that process:");
     scanf("%d",&processID);
      // 现在我们用函数 TerminateProcess()终止进程:
      // 这里我们用PROCESS_ALL_ACCESS
      hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,processID);
      if(hProcess==NULL)
      {
        printf("Unable to get handle of process: ");
        printf("Error is: %d",GetLastError());
       }
      TerminateProcess(hProcess,0);

      delete processInfo;
      return 0;
     }
     

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 列出所有进程,需要调用CreateToolHelp32Snapshot函数先得到系统进程快照的句柄,函数包含在&lt;tlhelp32.h&gt;头中。函数的具体格式如下: HANDLE_WINAPI CreateToolHelp32Snapshot(  DWORD dwFlags,  ....

    列出所有进程,需要调用CreateToolHelp32Snapshot函数先得到系统进程快照的句柄,函数包含在<tlhelp32.h>头中。函数的具体格式如下:

    HANDLE_WINAPI CreateToolHelp32Snapshot(
                                           DWORD dwFlags,
                                           DWORD th32ProcessID
                                          );

     

    其中各个参数含义如下:

    dwFlags:指定了获取系统进程快照的类型;

    th32ProcessID:指向要获取进程快照的ID,获取系统内所有进程快照时是0;

    如果函数调用成功返回快照句柄,否则返回INVALID_HANDLE_VALUE。在得到系统进程快照句柄之后,需要调用Process32First函数查找系统进程快照中的第一个进程。函数格式如下:

    BOOL Process32First(
                        HANDLE hSnapshot,
                        LPROCESSENTRY32 lppe
                       );
     

    再调用Process32Next函数列出系统中其它进程,格式如下:

    BOOL Process32Next(
                        HANDLE hSnapshot,
                        LPROCESSENTRY32 lppe
                       );
     

    两个函数的参数是一样的,其中hSnapshot是由CreateToolHelp32Snapshot函数返回的系统进程快照的句柄;而lppe是指向PROCESSENTRY的结构体指针,进程的详细信息保存在结构体中。PROCESSENTRY32结构体定义如下:

    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;
     

    当上述两个函数列举到进程时返回TRUE,否则返回FALSE。当列举到一个进程时lppe参数就会返回进程的详细信息,所以用户就可以读取这些进程的信息,然后输出。

    列举完后,需要调用CloseHandle函数关闭系统进程句柄。具体代码如下:

    #include <stdio.h>
    #include <windows.h>
    #include <string.h>
    #include <tlhelp32.h>
    int GetProcess()
    {
    	//PROCESSENTRY32结构体,保存进程具体信息
    	PROCESSENTRY32 pe32;
    	pe32.dwSize = sizeof(pe32);
    	//获得系统进程快照的句柄
    	HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	if (hProcessSnap == INVALID_HANDLE_VALUE)
    	{
    		printf("CreateToolhelp32Snapshot error.\n");
    		return 0;
    	}
    	//首先获得第一个进程
    	BOOL bProcess = Process32First(hProcessSnap, &pe32);
    	//循环获得所有进程
    	while (bProcess)
    	{
    		//打印进程名和进程ID
    		printf("%ls----%d\n", pe32.szExeFile, pe32.th32ProcessID);
    		bProcess = Process32Next(hProcessSnap, &pe32);
    	}
    	CloseHandle(hProcessSnap);
    	return 0;
    }
    int main()
    {
    	GetProcess();
    	return 0;
    }
    


    结果如图:

    展开全文
  • CreateToolhelp32Snapshot函数

    万次阅读 2017-02-28 15:54:10
    CreateToolhelp32Snapshot CreateToolhelp32Snapshot可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。说到底,可以获取系统中正在运行的进程信息,线程信息,等。 原型:...

    CreateToolhelp32Snapshot函数

    • CreateToolhelp32Snapshot可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。说到底,可以获取系统中正在运行的进程信息,线程信息,等。

    原型:

    HANDLE WINAPI CreateToolhelp32Snapshot(
      _In_ DWORD dwFlags,       //用来指定“快照”中需要返回的对象,可以是TH32CS_SNAPPROCESS等
      _In_ DWORD th32ProcessID  //一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取 当前进程快照时可以设为0
    );

    0x01.参数

    dwFlags [in]

    要包括在快照中的系统部分。此参数可以是以下一个或多个值。

    含义
    TH32CS_INHERIT 0x80000000表示快照句柄是可继承的。
    TH32CS_SNAPALL包括系统中的所有进程和线程,以及th32ProcessID中指定的进程的堆和模块。等效于使用OR运算指定组合的TH32CS_SNAPHEAPLIST,TH32CS_SNAPMODULE,TH32CS_SNAPPROCESS和TH32CS_SNAPTHREAD值。
    TH32CS_SNAPHEAPLIST 0x00000001包括快照中th32ProcessID中指定的进程的所有堆。要枚举堆,请参阅Heap32ListFirst。
    TH32CS_SNAPMODULE 0x00000008包括快照中th32ProcessID中指定的进程的所有模块。要枚举模块,请参阅Module32First。如果函数失败并返回ERROR_BAD_LENGTH,请重试该函数直到成功。64位Windows:在32位进程中使用此标志包括th32ProcessID中指定的进程的32位模块,而在64位进程中使用该进程包括64位模块。要包括来自64位进程的th32ProcessID中指定的进程的32位模块,请使用TH32CS_SNAPMODULE32标志。
    TH32CS_SNAPMODULE32 0x00000010包括从64位进程调用时快照中的th32ProcessID中指定的进程的所有32位模块。该标志可以与TH32CS_SNAPMODULE或TH32CS_SNAPALL组合使用。如果函数失败并返回ERROR_BAD_LENGTH,请重试该函数直到成功。
    TH32CS_SNAPPROCESS 0x00000002包括快照中系统中的所有进程。要枚举进程,请参阅Process32First。
    TH32CS_SNAPTHREAD 0x00000004包括快照中系统中的所有线程。要枚举线程,请参阅Thread32First。要标识属于特定进程的线程,在枚举线程时将其进程标识符与THREADENTRY32结构的th32OwnerProcessID成员进行比较。

    参数2

    th32ProcessID [in]

    要包括在快照中的进程的进程标识符。此参数可以为零以指示当前进程。当指定TH32CS_SNAPHEAPLIST,TH32CS_SNAPMODULE,TH32CS_SNAPMODULE32或TH32CS_SNAPALL值时,使用此参数。否则,它将被忽略,并且所有进程都包括在快照中。
    如果指定的进程是空闲进程或其中一个CSRSS进程,则此函数将失败,并且最后一个错误代码为ERROR_ACCESS_DENIED,因为它们的访问限制会阻止用户级代码打开它们。
    如果指定的进程是64位进程,并且调用程序是32位进程,则此函数失败,最后一个错误代码为ERROR_PARTIAL_COPY(299)

    返回值

    如果函数成功,它将返回一个打开的句柄到指定的快照。
    如果函数失败,则返回INVALID_HANDLE_VALUE。要获取扩展错误信息,请调用GetLastError。可能的错误代码包括ERROR_BAD_LENGTH

    0x02.备注

    1. 此功能拍摄的快照由其他工具帮助功能检查,以提供其结果。对快照的访问是只读的。快照句柄充当对象句柄,并且遵守与其在其中有效的进程和线程相同的规则。
    2. 要枚举所有进程的堆或模块状态,请指定TH32CS_SNAPALL并将th32ProcessID设置为零。然后,对于快照中的每个附加进程,再次调用CreateToolhelp32Snapshot,指定其进程标识符和TH32CS_SNAPHEAPLISTTH32_SNAPMODULE值。
    3. 当为包含当前进程以外的进程的堆和模块创建快照时,由于各种原因,CreateToolhelp32Snapshot函数可能会失败或返回不正确的信息。例如,如果目标进程中的加载器数据表已损坏或未初始化,或者在作为DLL被加载或卸载的结果的函数调用期间模块列表发生更改,则函数可能会失败,并显示ERROR_BAD_LENGTH或其他错误代码。确保目标进程未在暂挂状态下启动,并尝试再次调用该函数。如果在使用TH32CS_SNAPMODULETH32CS_SNAPMODULE32调用时,函数失败,ERROR_BAD_LENGTH,则再次调用该函数,直到成功。
    4. TH32CS_SNAPMODULETH32CS_SNAPMODULE32标志不会检索使用LOAD_LIBRARY_AS_DATAFILE或类似标志加载的模块的句柄。有关详细信息,请参阅LoadLibraryEx
      要销毁快照,请使用CloseHandle函数。
      请注意,您可以使用QueryFullProcessImageName函数从32位进程检索32位和64位进程的可执行映像的全名。

    0x03.包含库

    Minimum supported clientWindows XP [desktop apps only]
    Minimum supported serverWindows Server 2003 [desktop apps only]
    HeaderTlHelp32.h
    LibraryKernel32.lib
    DLLKernel32.dll

    0x04.Example

    #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详解

    千次阅读 2017-09-17 21:51:40
    HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, DWORD th32ProcessID ); dwFlags: TH32CS_INHERIT :使用这个标志表示,这个快照句柄是可继承的TH32CS_SNAPALL :表示使用了以下的全部标志,总共四个...
  • 在这里我们首先需要用到一个可以列出所有进程的一个函数CreateToolelp32Snapshot函数,函数包含在...头中,在帮助文档中,函数的具体格式如下HANDLE WINAPI CreateToolhelp32Snapshot( _In_ DWORD dwFlags, _In_ D...
  • CreateToolhelp32Snapshot

    2020-09-07 15:41:33
    可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。 函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、...在Win CE中,要删除快照,使用CloseToolhelp32Snapshot函数。
  • 使用CreateToolhelp32Snapshot获取系统进程 //提高权限.可结束太部分进程 BOOL CProcesskillDlg::UpdateProcessPrivilege(HANDLE hprocess,LPCTSTR lpName) { HANDLE hToken; HANDLE hProcess; LUID destLuid; int ...
  • ![图片说明]... 一款游戏获取 模块基址 这是我现在mian函数里的,获取的基址和下图不一样(下图获取的是正确的) !...我前后对比了一下,好像没有什么出入,为什么两个获取的基址不一样哈。...
  • C++ CreateToolhelp32Snapshot

    2015-10-28 10:15:00
    在具体实现时,系统快照句柄的获取是通过Win32 API函数CreateToolhelp32Snapshot()来完成的,通过该函数不仅可以获取进程快照,而且对于堆、模块和线程的系统快照同样可以 获取。 使用这个函数前必须在头文件...
  • CreateToolhelp32Snapshot TH32CS_SNAPPROCESS

    千次阅读 2017-03-24 10:07:23
    apiTlHelp32.h CreateToolhelp32Snapshot TH32CS_SNAPPROCESS PROCESSENTRY32 Process32First Process32Next CloseHandle
  • TlHelp32.h CreateToolhelp32Snapshot TH32CS_SNAPMODULE TH32CS_SNAPMODULE32 MODULEENTRY32 Module32First Module32Next CloseHandle
  • 参考:CreateToolhelp32Snapshot函数 #include "tlhelp32.h"//Kernel32.dll Kernel32.lib DWORD FindProcessIDByName(const std::wstring& processName)//0 not found ; other found; processName "process...
  • Takes a snapshot of the processes and the heaps, modules, and threads used by the processes.对当前系统进行一个快照。函数定义:HANDLE WINAPI CreateToolhelp32Snapshot( ...
  • TlHelp32.h> 先说一个结构体,用于保存取得操作系统进程快照的信息 PROCESSENTRY32 typedef struct tagPROCESSENTRY32 { DWORD dwSize; //结构体大小 DWORD cntUsage; //此进程引用次数计数器,已不再使用,...
  • 函数简介 ​函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个...HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, //用来指定"快照"中需要返回的对象,可以是TH32CS_S
  • TlHelp32.h CreateToolhelp32Snapshot TH32CS_SNAPHEAPLIST HEAPLIST32 Heap32ListFirst Heap32ListNext CloseHandle
  • CreateToolhelp32Snapshot 获取指定文件大小,in byte。 函数原型 DWORD GetFileSize(__kernel_entry NTSTATUS NtQueryInformationProcess( HANDLE ProcessHandle, PROCESSINFOCLASS ProcessInformationClass, ...
  • 通过ToolHelper中的API函数CreateToolhelp32Snapshot来获取目标进程中的线程ID。 BOOL GetThreadIdentify(HANDLE ProcessIdentify, vector<HANDLE>& ThreadIdentify) { BOOL IsOk = FALSE; ...
  • C++学习笔记: CreateToolhelp32Snapshot

    千次阅读 2013-10-02 09:45:37
    CreateToolhelp32Snapshot CreateToolhelp32Snapshot函数为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。  HANDLE WINAPI CreateToolhelp32Snapshot(  DWORD ...
  • HANDLE hSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pid); if(hSnap==INVALID_HANDLE_VALUE) { AfxMessageBox("创建快照失败!"); DWORD eid=GetLastError(); return 0; } BOOL ret=Module32First...
  • CreateToolhelp32Snapshot函数的头文件

    千次阅读 2014-05-30 16:25:13
    CreateToolhelp32Snapshot函数的头文件是--- #include "tlhelp32.h
  • 通过ToolHelper中的API函数CreateToolhelp32Snapshot来获取进程ID。 BOOL GetProcessIdByProcessImageName(HANDLE* ProcessID, const TCHAR* ProcessImageName ) { BOOL IsOk = FALSE; HANDLE ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,196
精华内容 2,478
关键字:

createtoolhelp32snapshot