⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enumprocswa.cpp

📁 《Windows应用程序捆绑核心编程》配套源码
💻 CPP
字号:
// enumprocswa.cp:枚举当前进程.
//
#include <windows.h>
#include <stdio.h>

typedef struct _WTS_PROCESS_INFO{
    DWORD SessionId;
    DWORD ProcessId;
    LPTSTR pProcessName;
    PSID pUserSid;
} WTS_PROCESS_INFO, * PWTS_PROCESS_INFO;

// NetBios指定的终端服务名,如果查看本地终端所有进程信息,
// 可以通过在控制台命令行下用nbtstat–an来获取本机NetBios名.

typedef HANDLE (WINAPI *WTSOPENSERVER)(LPTSTR pServerName);  

typedef BOOL (WINAPI *WTSENUMERATEPROCESSES)
(
 HANDLE hServer,   // WTSOpenServer返回的句柄. 
 DWORD Reserved,   // 保留值 0.
 DWORD Version,    // 指定枚举要求的版本,必须为 1.
 PWTS_PROCESS_INFO* ppProcessInfo, // 存放我们要的进程名和进程id.
 DWORD* pCount     // 存放ppProcessInfo里WTS_PROCESS_INFO结构数量指针.
 );

void main()
{
	HMODULE hWtsApi32 = LoadLibrary("wtsapi32.dll");
	
	WTSOPENSERVER pWtsOpenServer = (WTSOPENSERVER)
		GetProcAddress(hWtsApi32, "WTSOpenServerA");
	
	WTSENUMERATEPROCESSES pWtsEnumerateProcesses= 
		(WTSENUMERATEPROCESSES)
		GetProcAddress(hWtsApi32,"WTSEnumerateProcessesA");
	
	// 通过szServerName给终端服务名
	//(这里赋本机NetBios名)赋一个值并打开这项服务.
	
	char* szServerName = "DGV7WV1X";
	HANDLE hWtsServer = pWtsOpenServer(szServerName);
	
	// 然后开始遍历终端服务器上的所有进程,这里我们是指本机的所有进程.
	
	PWTS_PROCESS_INFO pWtspi;
	DWORD dwCount;
	
	if(!pWtsEnumerateProcesses(hWtsServer,
		      0, 1, &pWtspi,&dwCount)) return;
	
	for(DWORD i=0; i<dwCount; i++)
	{
		printf("ProcessID: %d (%s)\n", pWtspi[i].ProcessId,
			pWtspi[i].pProcessName);
	}

	getchar();  //暂停.
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -