亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? portmonview.cpp

?? 關于遠程網絡監視程序的源碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// PortMonView.cpp : CPortMonView 類的實現
//

#include "stdafx.h"
#include "PortMon.h"

#include "PortMonDoc.h"
#include "prochelp.h"
#include "mainfrm.h"
#include "QueueContainer.h"
#include "applicationscope.h"
#include "netdlg.h"
#include ".\portmonview.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CPortMonView

IMPLEMENT_DYNCREATE(CPortMonView, CViewExt)

BEGIN_MESSAGE_MAP(CPortMonView, CViewExt)
	ON_COMMAND(ID_OPER_CLOSEPROC, OnOperCloseProc)
	ON_UPDATE_COMMAND_UI(ID_OPER_CLOSEPROC, OnUpdateOperCloseProc)
	ON_COMMAND(ID_OPER_PREV, OnOperPrev)
	ON_COMMAND(ID_OPER_NEXT, OnOperNext)
	ON_UPDATE_COMMAND_UI(ID_OPER_PREV, OnUpdateOperPrev)
	ON_UPDATE_COMMAND_UI(ID_OPER_NEXT, OnUpdateOperNext)
	ON_WM_CONTEXTMENU()
	ON_COMMAND(ID_TOOL_PING, OnToolPing)
	ON_COMMAND(ID_TOOL_TRACERT, OnToolTracert)
	ON_COMMAND(ID_TOOL_IPADDR, OnComboIpAddrEnter)
	ON_COMMAND(ID_OPER_OPENPATH, OnOperOpenPath)
	ON_UPDATE_COMMAND_UI(ID_OPER_OPENPATH, OnUpdateOperOpenPath)
	ON_MESSAGE(WM_PROCESSNOTIFY, OnProcNotify)
	ON_WM_DESTROY()
	ON_COMMAND(ID_TOOL_WHOIS, OnToolWhois)
END_MESSAGE_MAP()

// CPortMonView 構造/析構

CPortMonView::CPortMonView() : CViewExt(IDV_PROCESS)
	, m_obAppScope( CApplicationScope::GetInstance(&m_obCallbackHdler) )
{
	// TODO: 在此處添加構造代碼
	m_hLibModule = NULL;
}

CPortMonView::~CPortMonView()
{
	if(m_hLibModule)
	{
		FreeLibrary(m_hLibModule);
	}
}

BOOL CPortMonView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此處通過修改 CREATESTRUCT cs 來修改窗口類或
	// 樣式

	return CViewExt::PreCreateWindow(cs);
}

void CPortMonView::OnInitialUpdate()
{
	CViewExt::OnInitialUpdate();

	// 填充 ListView。
	m_wndListExt.SetExtendedStyle( m_wndListExt.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES );

	if( !LoadExIpHelperProcedures() )
	{
		AfxMessageBox( "動態鏈接庫Iphlpapi功能函數定位失敗\n無法顯示網絡端口", MB_ICONINFORMATION );

		// 僅僅顯示進程信息
		((CPortMonApp *)AfxGetApp())->m_bShowNetProc = FALSE;
	}

	// add list item and start process monitor
	m_obViewParam.SetHwnd( GetSafeHwnd() );

	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	pFrame->OnViewRefresh();
}

BOOL CPortMonView::LoadExIpHelperProcedures(void)
{
	m_hLibModule = LoadLibrary(_T("iphlpapi.dll"));
	if (m_hLibModule == NULL)
		return FALSE;

	// XP or later
	m_pfnAllocateAndGetTcpExTable = (PROCALLOCATEANDGETTCPEXTABLEFROMSTACK)GetProcAddress(m_hLibModule,"AllocateAndGetTcpExTableFromStack");
	if (m_pfnAllocateAndGetTcpExTable == NULL)
		return FALSE;

	// XP or later
	m_pfnAllocateAndGetUdpExTable = (PROCALLOCATEANDGETUDPEXTABLEFROMSTACK)GetProcAddress(m_hLibModule,"AllocateAndGetUdpExTableFromStack");
	if (m_pfnAllocateAndGetUdpExTable == NULL)
		return FALSE;

	return TRUE;
}

// CPortMonView 診斷

#ifdef _DEBUG
void CPortMonView::AssertValid() const
{
	CViewExt::AssertValid();
}

void CPortMonView::Dump(CDumpContext& dc) const
{
	CViewExt::Dump(dc);
}

CPortMonDoc* CPortMonView::GetDocument() const // 非調試版本是內聯的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPortMonDoc)));
	return (CPortMonDoc*)m_pDocument;
}
#endif //_DEBUG


// CPortMonView 消息處理程序

void CPortMonView::AddAllNetProc(void)
{
	m_obAppScope.StopMonitoring();

	//m_mutexList.Lock();

	// clear all items existed
	m_wndListExt.SetRedraw(FALSE); // shut off redraw

	m_wndListExt.DeleteAllItems();
	int nCol = m_wndListExt.GetHeaderCtrl().GetItemCount()-1;
	while ( nCol >= 0 )
	{
		m_wndListExt.DeleteColumn(nCol--);
	}

	// add new header
	m_wndListExt.InsertColumn(COL_NETPID, "PID", LVCFMT_LEFT, 80);
	m_wndListExt.InsertColumn(COL_PROTOCOL, "協議", LVCFMT_LEFT, 80);
	m_wndListExt.InsertColumn(COL_LOCALIP, "本機IP", LVCFMT_LEFT, 120);
	m_wndListExt.InsertColumn(COL_LOCALPORT, "本機端口", LVCFMT_LEFT, 80);
	m_wndListExt.InsertColumn(COL_REMOTEIP, "遠端IP", LVCFMT_LEFT,120);
	m_wndListExt.InsertColumn(COL_REMOTEPORT, "遠端端口", LVCFMT_LEFT, 80);
	m_wndListExt.InsertColumn(COL_STATE, "狀態", LVCFMT_LEFT,120);
	m_wndListExt.InsertColumn(COL_NETPATH, "進程", LVCFMT_LEFT, 300);

	//first just get the TCP table
	CString temp;
	NETPROC_S *pstNetProc;
	PMIB_TCPTABLE_EX pTcpTable = NULL;
	CPortMonDoc *pDoc = GetDocument();

	m_pfnAllocateAndGetTcpExTable(&pTcpTable, TRUE, GetProcessHeap(), 0, 2);
	for (UINT i = 0; i < pTcpTable->dwNumEntries; i++)
	{
		pstNetProc = new NETPROC_S;
		ZeroMemory( pstNetProc, sizeof(NETPROC_S) );

		// fill network process informations
		pstNetProc->stProcessKey.dwPid = pTcpTable->table[i].dwProcessId;
		pstNetProc->stProcessKey.cProtocol = (char)enTCP;
		pstNetProc->stProcessKey.dwLocalIP = pTcpTable->table[i].dwLocalAddr;
		pstNetProc->stProcessKey.wLocalPort = htons((USHORT)(pTcpTable->table[i].dwLocalPort));
		pstNetProc->stProcessKey.dwRemoteIP = pTcpTable->table[i].dwRemoteAddr;
		pstNetProc->stProcessKey.wRemotePort = htons((USHORT)(pTcpTable->table[i].dwRemotePort));

		// process state
		switch (pTcpTable->table[i].dwState)
		{
			case MIB_TCP_STATE_CLOSED:
				temp = "關閉";
				break;
			case MIB_TCP_STATE_LISTEN:
				temp = "偵聽";
				break;
			case MIB_TCP_STATE_SYN_SENT:
				temp = "發送SYN";
				break;
			case MIB_TCP_STATE_SYN_RCVD:
				temp = "收到SYN";
				break;
			case MIB_TCP_STATE_ESTAB:
				temp = "連接建立";
				break;
			case MIB_TCP_STATE_FIN_WAIT1:
				temp = "等待FIN_1";
				break;
			case MIB_TCP_STATE_FIN_WAIT2:
				temp = "等待FIN_2";
				break;
			case MIB_TCP_STATE_CLOSE_WAIT:
				temp = "等待關閉";
				break;
			case MIB_TCP_STATE_CLOSING:
				temp = "關閉中";
				break;
			case MIB_TCP_STATE_LAST_ACK:
				temp = "最后確認";
				break;
			case MIB_TCP_STATE_TIME_WAIT:
				temp = "等待";
				break;
			case MIB_TCP_STATE_DELETE_TCB:
				temp = "刪除";
				break;
			default:
				temp = "未知";
				break;
		}
		//StringCbCopy(pstNetProc->szState, sizeof(pstNetProc->szState), temp);
		_tcscpy( pstNetProc->szState, (LPCTSTR)temp );

		// process path name
		temp = pDoc->GetProcessNameByID(pTcpTable->table[i].dwProcessId);
		if( temp.IsEmpty() )
		{
			temp.Format( "PID = %u", pTcpTable->table[i].dwProcessId );
		}
		//StringCbCopy(pstNetProc->szPath, MAX_PATH*sizeof(TCHAR), temp);
		_tcscpy( pstNetProc->szPath, (LPCTSTR)temp );

		// insert item into list
		InsertRow( (LPARAM)pstNetProc, COL_NETMAX );
	}

	//now get the UDP table
	PMIB_UDPTABLE_EX pUdpTable = NULL;
	m_pfnAllocateAndGetUdpExTable(&pUdpTable, TRUE, GetProcessHeap(), 0, 2);
	for (UINT j = 0; j < pUdpTable->dwNumEntries; j++)
	{
		pstNetProc = new NETPROC_S;
		ZeroMemory( pstNetProc, sizeof(NETPROC_S) );

		// fill network process informations
		pstNetProc->stProcessKey.dwPid = pUdpTable->table[j].dwProcessId;
		pstNetProc->stProcessKey.cProtocol = (char)enUDP;
		pstNetProc->stProcessKey.dwLocalIP = pUdpTable->table[j].dwLocalAddr;
		pstNetProc->stProcessKey.wLocalPort = htons((USHORT)pUdpTable->table[j].dwLocalPort);

		// process name
		temp = pDoc->GetProcessNameByID(pUdpTable->table[j].dwProcessId);
		if( temp.IsEmpty() )
		{
			temp.Format( "PID = %u", pUdpTable->table[j].dwProcessId );
		}
		//StringCbCopy(pstNetProc->szPath, MAX_PATH*sizeof(TCHAR), temp);
		_tcscpy( pstNetProc->szPath, (LPCTSTR)temp );

		// insert item into list
		InsertRow( (LPARAM)pstNetProc, COL_NETMAX );
	}
	m_wndListExt.Sort(COL_NETPID);
	m_wndListExt.SetRedraw(TRUE);

	// this function will redraw the list
	m_wndListExt.AutoSizeColumns();

	// free heap allocated
	if (pTcpTable)
		HeapFree(GetProcessHeap(), 0, pTcpTable);
	if (pUdpTable)
		HeapFree(GetProcessHeap(), 0, pUdpTable);

	//m_mutexList.Unlock();
}

void CPortMonView::AddAllProc(void)
{
	//m_mutexList.Lock();

	// clear all items existed
	m_wndListExt.SetRedraw(FALSE); // shut off redraw

	m_wndListExt.DeleteAllItems();
	int nCol = m_wndListExt.GetHeaderCtrl().GetItemCount()-1;
	while ( nCol >= 0 )
	{
		m_wndListExt.DeleteColumn(nCol--);
	}

	// add new header
	m_wndListExt.InsertColumn(COL_PID, "PID", LVCFMT_LEFT, 80);
	m_wndListExt.InsertColumn(COL_PRIORITY, "優先級", LVCFMT_LEFT, 80);
	m_wndListExt.InsertColumn(COL_THREADS, "線程數", LVCFMT_LEFT, 80);
	m_wndListExt.InsertColumn(COL_MEMUSAGE, "內存使用", LVCFMT_LEFT, 80);
	m_wndListExt.InsertColumn(COL_PATH, "進程", LVCFMT_LEFT, 300);

	// enumerate all process of system
	// turn on debug privilege
	CProcessHelp::EnableDebugPrivilege(TRUE);

	// using toolhelp snapshot
	SYSPROC_S *pstSysProc;
	CProcessHelp procHelp( TH32CS_SNAPPROCESS );
	PROCESSENTRY32 pe32 = {0};
	pe32.dwSize = sizeof(PROCESSENTRY32);

	BOOL bOK = procHelp.ProcessFirst(&pe32);
	while( bOK )
	{
		pstSysProc = new SYSPROC_S;
		ZeroMemory( pstSysProc, sizeof(SYSPROC_S) );

		// process ID
		pstSysProc->dwPid = pe32.th32ProcessID;
		// process priority
		pstSysProc->wPriority = (WORD)pe32.pcPriClassBase;
		// threads
		pstSysProc->wThreads = (WORD)pe32.cntThreads;

		// using toolhelp snapshot
		CProcessHelp modHelp( TH32CS_SNAPMODULE, pe32.th32ProcessID );
		MODULEENTRY32 me32 = {0};
		me32.dwSize = sizeof(MODULEENTRY32);

		BOOL bSucc = modHelp.ModuleFirst(&me32);
		if( bSucc && ( me32.th32ProcessID == pe32.th32ProcessID ) )
		{
			// process size
			pstSysProc->dwMemUsage = me32.modBaseSize;

			// process full name
			//StringCbCopy( pstSysProc->szPath, MAX_PATH*sizeof(TCHAR), me32.szExePath );
			_tcscpy( pstSysProc->szPath, me32.szExePath );
		}
		else
		{
			CString sTemp = pe32.szExeFile;
			if( sTemp.IsEmpty() )
			{
				sTemp.Format( "PID = %u", pe32.th32ProcessID );
			}
			//StringCbCopy( pstSysProc->szPath, MAX_PATH*sizeof(TCHAR), sTemp );
			_tcscpy( pstSysProc->szPath, (LPCTSTR)sTemp );
		}

		InsertRow( (LPARAM)pstSysProc, COL_SYSMAX );
		bOK = procHelp.ProcessNext(&pe32);
	}

	// turn off debug privilege
	CProcessHelp::EnableDebugPrivilege(FALSE);

	m_wndListExt.Sort(COL_PID);
	m_wndListExt.SetRedraw(TRUE); // turn on redraw

	// this function will redraw the list
	m_wndListExt.AutoSizeColumns();

	//m_mutexList.Unlock();

	// start process monitor
	m_obAppScope.StartMonitoring(&m_obViewParam);
}

void CPortMonView::OnOperCloseProc()
{
	int nItem;
	DWORD dwPID;
	CString sPID, sService;
	HANDLE hProcess;

	CPortMonDoc *pDoc = GetDocument();

	//m_mutexList.Lock();
	// get the PID of the selected items and kill them
	POSITION pos = m_wndListExt.GetFirstSelectedItemPosition();
	if(pos)
	{
		nItem = m_wndListExt.GetNextSelectedItem(pos);
		sPID = m_wndListExt.GetItemText(nItem, COL_PID);
		_stscanf( sPID.GetBuffer(), "%u", &dwPID );
		sPID.ReleaseBuffer();

		// force to close the process
		hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwPID );
		if (hProcess)
		{
			TerminateProcess( hProcess, 1 );
			CloseHandle( hProcess );

			RemoveProcByID(dwPID);
		}
		else
		{
			if( pDoc->KillService() )
			{
				RemoveProcByID(dwPID);
			}
		}
	}

	//m_mutexList.Unlock();
}

void CPortMonView::OnContextMenu(CWnd* pWnd, CPoint point)
{
	// TODO: 在此處添加消息處理程序代碼
    CMenu popMenu;
	popMenu.LoadMenu(IDR_POPMENU);

	CMenu *pPopMenu = popMenu.GetSubMenu(0);
	ASSERT(pPopMenu != NULL);

	CBCGPPopupMenu* pPopupMenu = new CBCGPPopupMenu;
	pPopupMenu->Create (this, point.x, point.y, pPopMenu->Detach ());
}

void CPortMonView::OnUpdateOperCloseProc(CCmdUI *pCmdUI)
{
	CPortMonDoc *pDoc = GetDocument();
	pCmdUI->Enable((m_wndListExt.GetSelectedCount() > 0) && !pDoc->IsKernService() );
}

void CPortMonView::OnItemChanged(int nItem)
{
	DWORD dwPID;
	CString sPID;
	CPortMonDoc *pDoc = GetDocument();

	if( nItem != -1 )
	{
		sPID = m_wndListExt.GetItemText( nItem, COL_PID );
		_stscanf( sPID.GetBuffer(), "%u", &dwPID );
		sPID.ReleaseBuffer();

		pDoc->SetCurProcess(dwPID);
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女脱光内衣内裤视频久久网站 | 欧美日韩另类国产亚洲欧美一级| 欧美日韩精品二区第二页| 日韩一级片网站| 亚洲自拍都市欧美小说| 黄色日韩网站视频| 日韩一区二区三区视频在线观看 | 91麻豆自制传媒国产之光| 91精品国产综合久久久久| 中文字幕一区二区不卡| 国产一区二区三区香蕉| 欧美一区二区在线免费观看| 亚洲人成在线观看一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲不卡av一区二区三区| 成人永久免费视频| 精品久久一二三区| 视频一区二区三区入口| 在线视频综合导航| 亚洲视频精选在线| 97精品久久久久中文字幕| 久久天堂av综合合色蜜桃网| 日本中文字幕一区| 欧美喷水一区二区| 亚洲国产精品久久久久秋霞影院| 成人av影院在线| 欧美国产一区二区在线观看| 国产麻豆成人传媒免费观看| 精品sm捆绑视频| 精品一区在线看| 欧美一卡二卡在线| 日本欧美加勒比视频| 91麻豆精品国产91久久久资源速度 | 一区二区不卡在线播放| 97久久人人超碰| 国产精品成人免费精品自在线观看| 狠狠色丁香久久婷婷综合丁香| 91精品国产91久久久久久最新毛片| 视频在线观看一区二区三区| 欧美日韩一区高清| 日日骚欧美日韩| 欧美日韩一区视频| 日韩精品一二区| 欧美成人精品1314www| 国产主播一区二区| 国产精品水嫩水嫩| 91免费小视频| 午夜精品影院在线观看| 欧美日韩国产a| 久久国产乱子精品免费女| 精品国产一区二区三区忘忧草| 九九精品视频在线看| 国产亚洲一区字幕| 91国偷自产一区二区三区观看| 亚洲国产欧美日韩另类综合| 欧美一级夜夜爽| 国产91精品久久久久久久网曝门| 国产精品成人免费在线| 欧美在线短视频| 视频一区中文字幕| 久久久久国产精品麻豆| 91社区在线播放| 麻豆专区一区二区三区四区五区| 欧美激情一区在线观看| 欧美午夜精品理论片a级按摩| 欧美a一区二区| 欧美国产日本视频| 91超碰这里只有精品国产| 国产成人精品影院| 天天免费综合色| 国产日韩亚洲欧美综合| 欧美体内she精视频| 国产一区二区三区| 亚洲一区二区不卡免费| 久久亚洲二区三区| 欧美三级日韩三级| 国产传媒欧美日韩成人| 日韩精品一卡二卡三卡四卡无卡| 国产精品欧美综合在线| 欧美日韩dvd在线观看| 东方欧美亚洲色图在线| 亚洲成人综合在线| 亚洲欧洲av一区二区三区久久| 欧美一区二区三区视频免费| 一本大道久久a久久综合| 韩国视频一区二区| 日日摸夜夜添夜夜添国产精品| 国产精品国产三级国产三级人妇| 日韩精品一区国产麻豆| 欧美亚洲免费在线一区| 成人性生交大片免费看在线播放| 久久精品噜噜噜成人88aⅴ| 亚洲精品伦理在线| 中文av一区特黄| 久久色成人在线| 日韩一区二区三区三四区视频在线观看| 91小视频在线| 国产99久久久久久免费看农村| 麻豆成人免费电影| 亚洲电影视频在线| 一区二区三区在线影院| 国产精品久久久久久久久搜平片| 欧美zozozo| 日韩欧美三级在线| 欧美日韩国产片| 欧美日韩在线综合| 色偷偷久久一区二区三区| 成人app下载| av成人免费在线| 成人的网站免费观看| 大白屁股一区二区视频| 国产成人av影院| 国产精品一区不卡| 国产精品白丝jk黑袜喷水| 国产麻豆成人传媒免费观看| 国产精品自拍av| 国产成人小视频| 99re这里都是精品| 色综合中文字幕国产 | 91美女片黄在线| 色综合久久综合网欧美综合网| 99精品久久99久久久久| 91精品福利视频| 欧美精品123区| 日韩一区二区三区视频| 精品久久久久一区二区国产| 精品国产91乱码一区二区三区 | 972aa.com艺术欧美| 日本道免费精品一区二区三区| 91成人在线精品| 91精品国产品国语在线不卡| 欧美一区二区三区免费视频| 精品少妇一区二区三区在线视频| 欧美精品一区二区三区在线| 国产人妖乱国产精品人妖| 亚洲图片激情小说| 午夜不卡av免费| 国产一区二区三区日韩| 成人h精品动漫一区二区三区| 91色|porny| 日韩色在线观看| 国产欧美中文在线| 一区二区三区加勒比av| 日韩电影免费在线| 国产精品99久久久久久宅男| 91麻豆国产自产在线观看| 欧美人狂配大交3d怪物一区| 久久久久久久久蜜桃| 亚洲男人的天堂网| 蜜臀a∨国产成人精品| 福利一区在线观看| 欧美日韩一级二级| 久久精品欧美日韩| 亚洲国产一区二区a毛片| 麻豆成人在线观看| 日本精品视频一区二区三区| 日韩午夜中文字幕| 亚洲精品成人少妇| 国产精品亚洲人在线观看| 色婷婷综合久久久久中文一区二区| 91麻豆精品国产91久久久| 国产精品色婷婷| 久久精品国产精品亚洲精品 | 亚洲免费资源在线播放| 免费在线成人网| 日本黄色一区二区| 国产欧美日产一区| 日韩高清一级片| 91视频免费观看| 久久午夜羞羞影院免费观看| 亚洲国产成人porn| 91美女蜜桃在线| 国产精品污污网站在线观看| 久久精品国产精品青草| 欧美日韩精品免费| 一区二区在线观看视频在线观看| 国产福利91精品一区| 91麻豆精品久久久久蜜臀| 一区二区三区高清不卡| 成人h动漫精品一区二区| 久久日韩精品一区二区五区| 日产国产欧美视频一区精品| 欧美日韩在线播放| 亚洲一区二区三区在线| 91麻豆国产自产在线观看| 国产精品久久免费看| 国产很黄免费观看久久| 久久综合99re88久久爱| 久久成人综合网| 91精品久久久久久久久99蜜臂| 亚洲欧美偷拍三级| 91麻豆产精品久久久久久| 国产女人aaa级久久久级| 国模套图日韩精品一区二区| 精品国产一区二区国模嫣然| 男女激情视频一区| 日韩一级黄色片| 久草中文综合在线| 久久综合九色综合久久久精品综合| 久久精品国产77777蜜臀|