请教各位大侠,如何获取当前系统中正在运行的所有应用程序?不是所有的进程,而是所有的应用程序,就好象任务管理器中应用程序那一页中的那些项目?
我只知道大概要用FindWindow,GetWindow之类的,但是具体不大会用,还请各位多指教。

解决方案 »

  1.   

    用CreateToolhelp32Snapshot()创建一个进程列表的快照,然后用Process32First和Process32Next函数来遍历这个系统的进程列表,并获得相应的进程的信息下面是MSDN上的例子,楼主可以参考一下#include <windows.h>
    #include <tlhelp32.h>
    #include <stdio.h>BOOL GetProcessList () 

        HANDLE         hProcessSnap = NULL; 
        BOOL           bRet      = FALSE; 
        PROCESSENTRY32 pe32      = {0}; 
     
        //  Take a snapshot of all processes in the system.     hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);     if (hProcessSnap == INVALID_HANDLE_VALUE) 
            return (FALSE); 
     
        //  Fill in the size of the structure before using it.     pe32.dwSize = sizeof(PROCESSENTRY32); 
     
        //  Walk the snapshot of the processes, and for each process, 
        //  display information.     if (Process32First(hProcessSnap, &pe32)) 
        { 
            DWORD         dwPriorityClass; 
            BOOL          bGotModule = FALSE; 
            MODULEENTRY32 me32       = {0}; 
     
            do 
            { 
                bGotModule = GetProcessModule(pe32.th32ProcessID, 
                    pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32));             if (bGotModule) 
                { 
                    HANDLE hProcess; 
     
                    // Get the actual priority class. 
                    hProcess = OpenProcess (PROCESS_ALL_ACCESS, 
                        FALSE, pe32.th32ProcessID); 
                    dwPriorityClass = GetPriorityClass (hProcess); 
                    CloseHandle (hProcess);                 // Print the process's information. 
                    printf( "\nPriority Class Base\t%d\n", 
                        pe32.pcPriClassBase); 
                    printf( "PID\t\t\t%d\n", pe32.th32ProcessID);
                    printf( "Thread Count\t\t%d\n", pe32.cntThreads);
                    printf( "Module Name\t\t%s\n", me32.szModule);
                    printf( "Full Path\t\t%s\n\n", me32.szExePath);
                } 
            } 
            while (Process32Next(hProcessSnap, &pe32)); 
            bRet = TRUE; 
        } 
        else 
            bRet = FALSE;    // could not walk the list of processes 
     
        // Do not forget to clean up the snapshot object.     CloseHandle (hProcessSnap); 
        return (bRet); 

      

  2.   

    这样列出来的是系统当前所有在运行的进程,得到的就是例如 XXX.exe,YYY.exe...等等所有的进程名。
    我现在只是想得到应用程序,就好象Windows200的任务管理器中有应用程序页面和进程页面,楼上所说的可以得到的是第二页内的所有列表,而我想要的是第一页中的所有列表。
      

  3.   

    用FindWindow()可以实现枚举所有应用程序!
      

  4.   

    是用EnumWindow()可以实现枚举所有应用程序
      

  5.   

    判断是exe还是dll就可以决定了吧
      

  6.   

    用EnumWindows 函数将枚举计算机上的所有现有窗口