MFC-通过WtsApi32.dll中的函数枚举进程

来源:互联网 发布:webgl编程指南 pdf 编辑:程序博客网 时间:2024/06/06 19:19

WtsApi32是终端服务API,这种方法获取进程信息很快很简洁.

效果如图:

1.包含头文件WtsApi32.h,导入库WstApi32.lib

2.代码如下:

//终端服务的名字,就是计算机的名字    TCHAR szComputerName[100] = TEXT("xxx");    //打开终端服务,返回一个句柄    HANDLE hSever = WTSOpenServer(szComputerName);    if (hSever == INVALID_HANDLE_VALUE)    {        AfxMessageBox(TEXT("打开终端服务失败"));        return;    }    //终端服务进程信息    PWTS_PROCESS_INFO pWtsProcess = { 0 };    DWORD dwcbProcess = 0;//进程数    //枚举进程    if (!WTSEnumerateProcesses(        hSever,    //终端服务句柄        0,         //设为0        1,         //版本设为1        &pWtsProcess, //得到终端服务进程信息        &dwcbProcess  //得到进程个数        ))    {        AfxMessageBox(TEXT("枚举进程失败"));        return;    }    int iCount = 0;    CString s;    //枚举进程    for (int i = 0; i < dwcbProcess;i++)    {        iCount = m_List.GetItemCount();        s.Format(TEXT("%s"), pWtsProcess[i].pProcessName);        m_List.InsertItem(iCount, s);        s.Format(TEXT("%d"), pWtsProcess[i].ProcessId);        m_List.SetItemText(iCount, 1, s);    }
0 0