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

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);
    }

你可能感兴趣的:(api,mfc,终端,终端服务,WstApi)