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