3573|7

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

程序列表 [复制链接]

  最近想做一个程序列表,就是显示当前正在运行的所有应用程序列表(不是进程),但不知道怎么获取,有没有直接获取的?进程我知道怎么获取。
  谢谢大家提供信息。

最新回复

#include #include #include 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 == (HANDLE)-1)         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); }   详情 回复 发表于 2009-4-9 18:36
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
进程包括了程序。
去除系统默认的,去除非exe结尾的,剩下的就是应用程序了。
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
程序无非就是 应用程序和系统程序, 去掉系统程序就是应用程序了.
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
可以参考这个吧:

BOOL CTaskBar::CloseAllWindows(HWND hwndTB)
/*---------------------------------------------------------------------------*\
*
\*---------------------------------------------------------------------------*/
{
    LPTBOBJ ptbobj, lptbStart, lptbTray;

    lptbStart = GetItem(hwndTB, (int)HHTB_START);
    lptbTray  = GetItem(hwndTB, (int)HHTB_FIRSTNOTIFY);

    // First, find the currently checked one.
    ptbobj = (LPTBOBJ)m_plistTaskBar->Next(&lptbStart->lpObj);
    while (ptbobj && ptbobj != lptbTray)
    {
        if (IsWindow(ptbobj->ptbi->m_hwndMain))
        {
            SendMessage(ptbobj->ptbi->m_hwndMain, WM_CLOSE, 0, 0);
        }
        ptbobj = (LPTBOBJ)m_plistTaskBar->Next(&ptbobj->lpObj);
    }

    return TRUE;

} /* HHTaskBar_CloseAllWindows()
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
我用了一下一点代码:
HANDLE g_hProHandle = NULL;
g_hProHandle = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
这个API的返回值即hProHandle  == INVALID_HANDLE_VALUE ;
返回的句柄值总是不正确,用这个API有需要注意的没有?
有谁知道的,谢了。

 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 xing840817 的回复:
我用了一下一点代码:
HANDLE g_hProHandle = NULL;
g_hProHandle = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
这个API的返回值即hProHandle? == INVALID_HANDLE_VALUE ;
返回的句柄值总是不正确,用这个API有需要注意的没有?
有谁知道的,谢了。




定制时要增加Toolhelp组件吧
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
但进程是得到了。
我需要显示和进程相对应的应用程序名称在界面中,怎样能根据进程取得应用程序名称?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
#include
#include
#include

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 == (HANDLE)-1)
        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);
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表