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

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

?? portmonview.cpp

?? 關于遠程網絡監視程序的源碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	else
	{
		pDoc->SetCurProcess(0);
	}

	if( ((CPortMonApp *)AfxGetApp())->m_bShowNetProc )
	{
		UpdateIpAddrCombo(nItem);
	}
}

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

	int nItem = 0;
	m_wndListExt.SetFocus();

	POSITION pos = m_wndListExt.GetFirstSelectedItemPosition();
	if(pos) // only one item can be select
	{
		nItem = m_wndListExt.GetNextSelectedItem(pos);
		m_wndListExt.SetItemState( nItem, ~(LVIS_SELECTED | LVIS_FOCUSED), LVIS_SELECTED | LVIS_FOCUSED );
		nItem--;
	}

	m_wndListExt.SetItemState( nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
	//m_mutexList.Unlock();
}

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

	int nItem = 0;
	m_wndListExt.SetFocus();

	POSITION pos = m_wndListExt.GetFirstSelectedItemPosition();
	if(pos) // only one item can be select
	{
		nItem = m_wndListExt.GetNextSelectedItem(pos);
		m_wndListExt.SetItemState( nItem, ~(LVIS_SELECTED | LVIS_FOCUSED), LVIS_SELECTED | LVIS_FOCUSED );
		nItem++;
	}

	m_wndListExt.SetItemState( nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );

	//m_mutexList.Unlock();
}

void CPortMonView::OnUpdateOperPrev(CCmdUI *pCmdUI)
{
	int nItem = 0;
	POSITION pos = m_wndListExt.GetFirstSelectedItemPosition();
	if(pos) // only one item can be select
	{
		nItem = m_wndListExt.GetNextSelectedItem(pos);
	}

	pCmdUI->Enable(nItem > 0);
}

void CPortMonView::OnUpdateOperNext(CCmdUI *pCmdUI)
{
	int nItem = 0;
	POSITION pos = m_wndListExt.GetFirstSelectedItemPosition();
	if(pos) // only one item can be select
	{
		nItem = m_wndListExt.GetNextSelectedItem(pos);
	}

	pCmdUI->Enable(nItem < (m_wndListExt.GetItemCount() - 1));
}

void CPortMonView::AddProcessCreated(DWORD dwProcID)
{
	// turn on debug privilege
	CProcessHelp::EnableDebugPrivilege(TRUE);

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

	if( procHelp.ProcessFind( dwProcID, &pe32 ) )
	{
		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
		BOOL bOK = FALSE;
		int nTryTimes = 0;
		do
		{
			::Sleep(100);
			CProcessHelp modHelp( TH32CS_SNAPMODULE, pe32.th32ProcessID );
			MODULEENTRY32 me32 = {0};
			me32.dwSize = sizeof(MODULEENTRY32);

			bOK = modHelp.ModuleFirst(&me32);
			if( bOK && (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 );
				break;
			}

			nTryTimes++;
		} while( !bOK && (nTryTimes < 50) );

		if( !bOK )
		{
			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 );
	}

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

void CPortMonView::RemoveProcByID(DWORD dwProcID)
{
	CString sPID;
	sPID.Format( "%u", dwProcID );

	int nItem;
	LVFINDINFO info;
	info.flags = LVFI_PARTIAL | LVFI_STRING;
	info.psz = (LPCTSTR)sPID;

	while( (nItem = m_wndListExt.FindItem(&info)) != -1 )
	{
		m_wndListExt.DeleteItem(nItem);
	}
}

void CPortMonView::FillProcKey(PROCKEY_S *pstProcKey, int nItem)
{
	CString sTemp;

	if( !pstProcKey )
	{
		return;
	}
	ZeroMemory( pstProcKey, sizeof(PROCKEY_S) );

	LVITEM lvi;
	ZeroMemory( &lvi, sizeof(LVITEM) );
	lvi.mask = LVIF_PARAM;
	lvi.iItem = nItem;
	lvi.iSubItem = 0;

	if ( m_wndListExt.GetItem( &lvi ) )
	{
		NETPROC_S *pNetProc = (NETPROC_S *)lvi.lParam;
		CopyMemory( pstProcKey, &(pNetProc->stProcessKey), sizeof(PROCKEY_S) );
	}
}

BOOL CPortMonView::ProcExists(PROCKEY_S *pstProcKey)
{
	PROCKEY_S stKey;

	for( int i = 0; i < m_wndListExt.GetItemCount(); i++ )
	{
		FillProcKey(&stKey, i);
		if( m_lstNetProc.CompareKey( &stKey, pstProcKey ) )
		{
			return TRUE;
		}
	}

	return FALSE;
}

void CPortMonView::UpdateListView(void)
{
	PROCKEY_S stProcKey;

	// delete process closed
	for( int i = (m_wndListExt.GetItemCount() - 1); i >= 0; i-- )
	{
		FillProcKey(&stProcKey, i);
		if( !m_lstNetProc.FindProc(&stProcKey) )
		{
			m_wndListExt.DeleteItem(i);
		}
	}

	// add process currently opened
	CProcList::iterator iter;
	NETPROC_S *pstNetProc;
	for( iter = m_lstNetProc.begin(); iter != m_lstNetProc.end(); iter++ )
	{
		pstNetProc = *iter;
		if( !ProcExists( &(pstNetProc->stProcessKey) ) )
		{
			AddNetProcCreated(pstNetProc);
		}
	}
}

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

	// remove list node at first
	m_lstNetProc.RemoveAll();

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

		m_lstNetProc.AddNetProc(pstNetProc);
	}

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

		m_lstNetProc.AddNetProc(pstNetProc);
	}

	if (pTcpTable)
		HeapFree(GetProcessHeap(), 0, pTcpTable);
	if (pUdpTable)
		HeapFree(GetProcessHeap(), 0, pUdpTable);

	// update list view now
	UpdateListView();
}

void CPortMonView::AddNetProcCreated(NETPROC_S *pstNetProc)
{
	if( !pstNetProc )
	{
		return;
	}

	// we must allocate a new block for list view lParam
	NETPROC_S *pstProcNew = new NETPROC_S;
	CopyMemory( pstProcNew, pstNetProc, sizeof(NETPROC_S) );

	InsertRow( (LPARAM)pstProcNew, COL_NETMAX );
}

void CPortMonView::OnToolPing()
{
	if( !DoNetOpera(NET_OPER_PING) )
	{
		AfxMessageBox("啟動失敗");
	}
}

void CPortMonView::OnToolTracert()
{
	if( !DoNetOpera(NET_OPER_TRACERT) )
	{
		AfxMessageBox("啟動失敗");
	}
}

void CPortMonView::OnComboIpAddrEnter()
{
	CBCGPToolbarComboBoxButton *pIpAddrCombo = ((CMainFrame *)AfxGetMainWnd())->GetComboIpAddr();
	if( !pIpAddrCombo )
	{
		return;
	}

	CString sIpAddr("");
	sIpAddr = pIpAddrCombo->GetText();

	// add the item at top of combo-list
	pIpAddrCombo->AddItemHead(sIpAddr);
}

void CPortMonView::OnOperOpenPath()
{
	int nItem;
	CString sTemp(_T(""));
	POSITION pos = m_wndListExt.GetFirstSelectedItemPosition();
	if(pos)
	{
		nItem = m_wndListExt.GetNextSelectedItem(pos);
		if( ((CPortMonApp *)AfxGetApp())->m_bShowNetProc )
		{
			sTemp = m_wndListExt.GetItemText(nItem, COL_NETPATH);
		}
		else
		{
			sTemp = m_wndListExt.GetItemText(nItem, COL_PATH);
		}

		int nIndex = sTemp.ReverseFind('\\');
		if( nIndex > 0 )
		{
			sTemp = sTemp.Left(nIndex);
			::ShellExecute( NULL, "explore", sTemp, NULL, NULL, SW_SHOWNORMAL );
		}
	}
}

void CPortMonView::OnUpdateOperOpenPath(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(m_wndListExt.GetSelectedCount() > 0);
}

int CPortMonView::CompareItems(LPARAM lParam1, LPARAM lParam2, int nColumn)
{
	int nResult = 0;

	if( ((CPortMonApp *)AfxGetApp())->m_bShowNetProc )
	{
		nResult = CompNetProcItem( (NETPROC_S *)lParam1, (NETPROC_S *)lParam2, nColumn );
	}
	else
	{
		nResult = CompSysProcItem( (SYSPROC_S *)lParam1, (SYSPROC_S *)lParam2, nColumn);
	}

	return nResult;
}

int CPortMonView::CompNetProcItem(NETPROC_S *pProc1, NETPROC_S *pProc2, int nColumn)
{
	int nResult = 0;
	DWORD dwNum1 = 0, dwNum2 = 0;

	CString sTemp1(""), sTemp2("");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产成人午夜av影院| 欧洲色大大久久| 色噜噜狠狠色综合中国| 欧美一级久久久| 一区二区高清在线| 国产成人无遮挡在线视频| 欧美疯狂做受xxxx富婆| 亚洲精品一卡二卡| 成人精品国产免费网站| 精品国产麻豆免费人成网站| 亚洲国产精品久久久久秋霞影院| 成人在线一区二区三区| 久久午夜羞羞影院免费观看| 偷窥国产亚洲免费视频| 91电影在线观看| 亚洲欧美日韩人成在线播放| 成人午夜av电影| 久久精品一区蜜桃臀影院| 久久国产日韩欧美精品| 9191成人精品久久| 亚洲午夜精品网| 91精品福利在线| 亚洲精品国产精华液| 97精品久久久久中文字幕| 国产精品美女一区二区三区| 国产成人精品免费网站| 精品福利在线导航| 国产一区二三区| 26uuu久久天堂性欧美| 久久成人精品无人区| 日韩欧美色综合网站| 美女www一区二区| 日韩一区和二区| 久久精品国产亚洲5555| 久久久久久久久久电影| 国产成人高清在线| 国产精品免费av| 91免费视频网址| 亚洲国产中文字幕| 91精品麻豆日日躁夜夜躁| 午夜天堂影视香蕉久久| 欧美精品第一页| 精品夜夜嗨av一区二区三区| 久久久精品影视| 91网站在线观看视频| 亚洲一区二区3| 日韩视频在线你懂得| 国内久久精品视频| 国产目拍亚洲精品99久久精品| 不卡av在线免费观看| 亚洲精品国产精华液| 91精品国产免费久久综合| 精品一区二区三区视频| 国产精品三级电影| 欧美视频一区在线观看| 久久精品99国产精品日本| 日本一二三不卡| 欧美中文字幕一区二区三区亚洲| 日韩制服丝袜先锋影音| 久久综合久久鬼色中文字| 99热这里都是精品| 午夜精品福利视频网站| 久久久久久免费| 色国产综合视频| 久久国内精品自在自线400部| 国产精品色呦呦| 日韩欧美一区二区三区在线| 国产成人免费视| 日韩高清国产一区在线| 国产精品美日韩| 欧美电视剧免费全集观看| 91在线无精精品入口| 蜜桃91丨九色丨蝌蚪91桃色| 中文字幕在线免费不卡| 91精品国产综合久久精品麻豆| 国产成人综合视频| 日韩精品一二三四| 中文字幕一区在线观看视频| 51久久夜色精品国产麻豆| 不卡的av在线播放| 国内精品伊人久久久久影院对白| 亚洲一区在线播放| 国产精品区一区二区三区| 91精品久久久久久久久99蜜臂| 99精品国产一区二区三区不卡| 麻豆91在线播放免费| 亚洲一区二区美女| 中文字幕一区二区日韩精品绯色| 日韩精品一区二区三区在线观看 | 欧美怡红院视频| 国产乱码精品一区二区三区忘忧草| 亚洲一区二区三区四区中文字幕| 欧美极品美女视频| 欧美成人三级电影在线| 欧美二区三区的天堂| 色噜噜偷拍精品综合在线| 成人福利电影精品一区二区在线观看| 免费精品视频最新在线| 亚洲第一福利视频在线| 怡红院av一区二区三区| ...xxx性欧美| 国产精品三级av在线播放| 国产日韩av一区| 26uuu久久天堂性欧美| 精品国产自在久精品国产| 欧美一区二区在线免费播放| 欧美日韩一区国产| 欧美在线小视频| 欧洲亚洲精品在线| 欧美日韩免费电影| 欧美日韩国产高清一区二区 | 亚洲成人av中文| 亚洲线精品一区二区三区八戒| 综合激情网...| 综合自拍亚洲综合图不卡区| 日韩美女精品在线| 成人免费视频在线观看| 亚洲免费观看高清在线观看| 亚洲人妖av一区二区| 亚洲黄色免费电影| 午夜精品福利视频网站| 奇米四色…亚洲| 激情成人综合网| 成人精品免费视频| 色老汉一区二区三区| 欧美男人的天堂一二区| 日韩三级免费观看| 久久精品亚洲一区二区三区浴池| 国产亚洲欧洲一区高清在线观看| 国产精品全国免费观看高清 | 91麻豆精品国产91久久久使用方法| 欧美日韩亚洲国产综合| 欧美一区二区三区视频在线| 欧美成人在线直播| 国产日韩精品一区二区三区| 亚洲欧美日韩精品久久久久| 天天综合色天天综合色h| 精品一区二区国语对白| 成人国产电影网| 欧美日韩一级视频| 久久久久久久久伊人| 亚洲视频在线一区观看| 日韩精品一二三区| 国产二区国产一区在线观看| 色婷婷久久久久swag精品| 欧美理论在线播放| 国产欧美日韩综合精品一区二区 | 亚洲免费视频成人| 一区二区三区精品在线| 精品伊人久久久久7777人| 99久久婷婷国产综合精品电影 | 成人激情午夜影院| 欧美日韩高清一区二区| 久久午夜老司机| 亚洲高清久久久| 粉嫩av一区二区三区粉嫩 | 精品久久久久久久久久久久久久久 | 国产欧美日产一区| 亚洲va国产va欧美va观看| 国产一区二区三区免费观看| 欧美自拍丝袜亚洲| 国产日韩精品一区二区浪潮av| 亚洲一区二区三区自拍| 国产99久久精品| 日韩一区二区三区电影在线观看 | 国v精品久久久网| 在线视频欧美区| 国产欧美日本一区二区三区| 人人精品人人爱| 色婷婷久久久综合中文字幕 | 国产一区二区美女诱惑| 欧美日韩大陆在线| 国产精品成人免费在线| 久久99国产乱子伦精品免费| 精品视频在线看| 日韩理论片在线| 成人app在线观看| 久久久777精品电影网影网 | av一本久道久久综合久久鬼色| 欧美tickling网站挠脚心| 亚洲大片一区二区三区| 91在线观看视频| 中文字幕亚洲电影| 成人黄页在线观看| 久久精品人人做人人综合| 免费在线看成人av| 91精品国产aⅴ一区二区| 亚洲午夜精品网| 精品污污网站免费看| 亚洲一区在线观看免费| 欧洲亚洲精品在线| 亚洲一区在线看| 欧美三级中文字幕在线观看| 樱花草国产18久久久久| 欧美在线不卡视频| 亚洲第一会所有码转帖| 欧美久久一二区| 免费精品视频最新在线| 欧美不卡在线视频| 国产精品一区二区三区99|