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

📄 thread.cpp

📁 一个进程管理的源程序.zip
💻 CPP
字号:
// Thread.cpp : implementation file
//

#include "stdafx.h"
#include "MFCTList.h"
#include "Thread.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

BEGIN_MESSAGE_MAP(CThread, CListCtrl)
	//{{AFX_MSG_MAP(CThread)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CThread message handlers


/////////////////////////////////////////////////////////////////////////////
// CThread

CThread::CThread()
{
}

CThread::~CThread()
{
}


void CThread::DoRefresh()
{
	CListCtrl* pList = (CListCtrl*) GetDlgItem(IDC_ThreadList);
	ASSERT(pList != NULL);

	// reset what's there

	pList->DeleteAllItems();

    //
    // Determine what system we're on and do the right thing
    //

    LPGetTaskList     GetTaskList;
    LPEnableDebugPriv EnableDebugPriv;

    OSVERSIONINFO verInfo;
	memset(&verInfo, 0, sizeof(verInfo));

    verInfo.dwOSVersionInfoSize = sizeof(verInfo);
    GetVersionEx(&verInfo);

    switch (verInfo.dwPlatformId)
    {
    case VER_PLATFORM_WIN32_NT:
		GetTaskList     = GetTaskListNT;
		EnableDebugPriv = EnableDebugPrivNT;
		break;

    case VER_PLATFORM_WIN32_WINDOWS:
		GetTaskList = GetTaskList95;
		EnableDebugPriv = EnableDebugPriv95;
		break;

    default:
//		m_bBroken = TRUE;
		pList->InsertItem(0, _T("Requires Win95 or WinNT"));
		return;
    }

    EnableDebugPriv();

    // get the task list for the system

	CMFCTListApp* pApp = (CMFCTListApp*) AfxGetApp();
	pApp->ClearTaskList();
	CTaskList& refTaskList = pApp->GetTaskList();

    DWORD numTasks = GetTaskList(refTaskList);

    // enumerate all windows and try to get the window
    // titles for each task

    GetWindowTitles(refTaskList);

    //
    // print the task list
    //

	int n;
	for (n = 0; n < refTaskList.GetSize(); n++)
	{   
		HANDLE  hProcess;
		CString str,str1;
		str.Format("0x%8.8X", refTaskList[n]->dwProcessId);
        hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, refTaskList[n]->dwProcessId );

		str.Format("0x%8.8X", refTaskList[n]->dwProcessId);
		int	nItem;
		nItem=pList->InsertItem(n, refTaskList[n]->ProcessName);
		pList->SetItemText(nItem, 1, str);
		CString pid;
		pid.Format("0x%8.8X",refTaskList[n]->th32ParentProcessID);
        pList->SetItemText(nItem, 2,pid );
		DWORD pi=GetPriorityClass(hProcess);
        str1.Format("%6ld", pi);
		pList->SetItemText(nItem, 3, str1);
        CString cnt;
		cnt.Format("%6ld", refTaskList[n]->cntThreads);
        pList->SetItemText(nItem, 4,cnt );
		pList->SetItemText(nItem, 5, refTaskList[n]->WindowTitle);
		pList->SetItemText(nItem, 6, refTaskList[n]->szExeFile);
	}

	pList->SetColumnWidth(0, LVSCW_AUTOSIZE);
	pList->SetColumnWidth(1, LVSCW_AUTOSIZE);
	pList->SetColumnWidth(2, LVSCW_AUTOSIZE);
	pList->SetColumnWidth(3, LVSCW_AUTOSIZE);
	pList->SetColumnWidth(4, LVSCW_AUTOSIZE);
	pList->SetColumnWidth(5, LVSCW_AUTOSIZE);
	pList->SetColumnWidth(6, LVSCW_AUTOSIZE);

	CWnd* pWnd = GetDlgItem(IDC_KILL);
	pWnd->EnableWindow(FALSE);
	CWnd* pWnd1 = GetDlgItem(IDC_PRIORITY);
	pWnd1->EnableWindow(FALSE);

	//END_SAMPLE
}

⌨️ 快捷键说明

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