Скачиваний:
13
Добавлен:
01.05.2014
Размер:
1.82 Кб
Скачать
// Lab07.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>
#include <conio.h>

int main(int argc, char* argv[])
{
	HANDLE SS=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
	LPPROCESSENTRY32 PE[140];
	LPTHREADENTRY32 TE[1000];
	PE[0]=new PROCESSENTRY32;
	PE[0]->dwSize = sizeof(*(PE[0]));
	Process32First(SS,PE[0]);
	int i=0;
	do
	{
		PE[++i]=new PROCESSENTRY32;	
		PE[i]->dwSize = sizeof(*(PE[i]));
	} while(Process32Next(SS,PE[i]));
	PE[i+1]=new PROCESSENTRY32;
	for(int j=0;j<i-1;j++)
		for(int k=0;k<i-1;k++)
			if(PE[k]->th32ProcessID > PE[k+1]->th32ProcessID)
			{
				(*PE[i+1])=(*PE[k]);
				(*PE[k])=(*PE[k+1]);
				(*PE[k+1])=(*PE[i+1]);
			}

	cprintf("%20s%20s%20s\n","Number","Process EXE File","Process ID");
	for(j=0;j<i;j++)
		cprintf("%20d%20s%20d\n",j+1,PE[j]->szExeFile,PE[j]->th32ProcessID);
	cprintf("Enter number of process: ");
	int inp;
	cscanf("%d",&inp);
	cprintf("\n");
	TE[0]=new THREADENTRY32;
	TE[0]->dwSize = sizeof(*(TE[0]));
	
	
	
	Thread32First(SS,TE[0]);
	i=0;
	do
	{
		if(TE[i]->th32OwnerProcessID==PE[inp-1]->th32ProcessID)
		{
			TE[++i]=new THREADENTRY32;
			TE[i]->dwSize = sizeof(*(TE[i]));
		}
	} while(Thread32Next(SS,TE[i]));
	if(TE[i]->th32OwnerProcessID!=PE[inp-1]->th32ProcessID)i--;
	TE[i+1]=new THREADENTRY32;
	for(j=0;j<i-1;j++)
		for(int k=0;k<i-1;k++)
			if(TE[k]->th32ThreadID > TE[k+1]->th32ThreadID)
			{
				(*TE[i+1])=(*TE[k]);
				(*TE[k])=(*TE[k+1]);
				(*TE[k+1])=(*TE[i+1]);
			}
	cprintf("%20s%20s%20s\n","Number","Thread ID","Thread Priority");
	for(j=0;j<i+1;j++)
		cprintf("%20d%20d%20d\n",j+1,TE[j]->th32ThreadID,TE[j]->tpBasePri);
	cprintf("Press any key to quit...");
	_getch();
	_getch();
	return 0;

}
Соседние файлы в папке all