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

📄 traceconsoledlgbar.cpp

📁 网络分析工具
💻 CPP
字号:
/*
  Packet Edit Studio Copyright (C) 2008 Chris Smith

  TraceConsoleDlgBar.cpp

  This file is part of the Packet Edit Studio Project.
  version: ALPHA

  *Distributed under the terms of the zlib/libpng public license.*
  
  Author: 

	Chris Smith (sourcemagik.com)
	(chris@sourcemagik.com)
  
  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
*/

// The parent window for the trace console (handles button / dialog creation)

	#include "stdafx.h"

/*************************************************************/
/*			CTraceConsoleDlgBar								 */
/*															 */
/*	Dialog for create a MDI based sniffing UI with easy		 */
/*  use and integration.									 */
/*************************************************************/

	/*************************************************************/
	/*			Constructor / Destructor						 */
	/*************************************************************/

		//init
		CTraceConsoleDlgBar::CTraceConsoleDlgBar()
			: CDialogBar()
		{
		}

		//free
		CTraceConsoleDlgBar::~CTraceConsoleDlgBar()
		{
		}
		
	/*************************************************************/
	/*			Specific Button Events							 */
	/*************************************************************/

		//start sniffing button clicked
		void CTraceConsoleDlgBar::OnStartSniffButtonDown()
		{

			// not already hooking: START HOOKING
			if(m_SniffToolBar.GetToolBarCtrl().IsButtonChecked(ID_SNIFFER_START))
			{
				m_SnoopBttnState = TRUE;

				// if it is not already hooking, start
				if(!PESApp.IsHooking())
				{
					if(!m_SnoopBttnState)
						OnStopSniffButtonDown();

					// try to start
					if(!PESApp.StartHooking())
					{
						m_StatusBar->SetPaneText(0, "Dll Injection Failed");
						m_SnoopBttnState = FALSE;
						m_SniffToolBar.SetButtonInfo(0, ID_SNIFFER_START, TBBS_CHECKBOX, 0); 
					}

					// failed to start
					else
					{
						m_SnoopBttnState = TRUE;
						m_SniffToolBar.GetToolBarCtrl().EnableButton(ID_SNIFFER_PAUSE, m_SnoopBttnState);
						m_SniffToolBar.GetToolBarCtrl().EnableButton(ID_SNIFFER_STOP, m_SnoopBttnState);

						m_SniffActivityDlg.StartGraphTimer();
					}
				}
			}

			// already hooking: STOP HOOKING
			else
				OnStopSniffButtonDown();
		}

		//pause sniffing button clicked
		void CTraceConsoleDlgBar::OnPauseSniffButtonDown()
		{
			// toggle
			if(m_SniffToolBar.GetToolBarCtrl().IsButtonChecked(ID_SNIFFER_PAUSE))
				PESApp.PauseHooking(true);
			else
				PESApp.PauseHooking(false);
		}

		//stop sniffing button clicked
		void CTraceConsoleDlgBar::OnStopSniffButtonDown()
		{

			// clean up if it was hooking
			if(m_SnoopBttnState)
			{
				m_SnoopBttnState = FALSE;
				m_SniffToolBar.GetToolBarCtrl().EnableButton(ID_SNIFFER_PAUSE, m_SnoopBttnState);
				m_SniffToolBar.GetToolBarCtrl().EnableButton(ID_SNIFFER_STOP, m_SnoopBttnState);
				m_SniffToolBar.GetToolBarCtrl().CheckButton(ID_SNIFFER_PAUSE, FALSE);
				m_SniffToolBar.SetButtonInfo(0, ID_SNIFFER_START, TBBS_CHECKBOX, 0);
			}

			// end hooking
			PESApp.StopHooking();

			// tell the graph to stop graphing
			m_SniffActivityDlg.EndGraphTimer();
		}

		void CTraceConsoleDlgBar::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
		{
			m_Meters.ShowWindow(SW_HIDE);
			m_SniffDetailsDlg.ShowWindow(SW_HIDE);
			m_SniffStatsDlg.ShowWindow(SW_HIDE);
			m_SniffActivityDlg.ShowWindow(SW_HIDE);
			m_SniffLogDlg.ShowWindow(SW_HIDE);

			switch(m_TabMenu.GetCurSel())
			{
				//guage
				case 0:
					m_Meters.ShowWindow(SW_SHOW);
					break;

				//details
				case 1:
					m_SniffDetailsDlg.ShowWindow(SW_SHOW);
					break;

				//stats
				case 2:
					m_SniffStatsDlg.ShowWindow(SW_SHOW);
					break;

				//activity
				case 3:
					m_SniffActivityDlg.ShowWindow(SW_SHOW);
					break;

				//log
				/*case 4:
					m_SniffLogDlg.ShowWindow(SW_SHOW);
					break;*/

				default:
					break;

			}
		}

	/*************************************************************/
	/*			Window Events									 */
	/*************************************************************/

		//set up controls
		void CTraceConsoleDlgBar::DoDataExchange(CDataExchange* pDX)
		{
			CDialogBar::DoDataExchange(pDX);
		}

		//init code
		LONG CTraceConsoleDlgBar::OnInitDialog ( UINT wParam, LONG lParam)
		{

			m_SnoopBttnState = FALSE;
			BOOL bRet = (BOOL)HandleInitDialog(wParam, lParam);

			// create sniff bar
			if (!UpdateData(FALSE))
			{
				TRACE0("Warning: UpdateData failed during dialog init.\n");
			}

			if(!m_SniffToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC  ) || !m_SniffToolBar.LoadToolBar(IDR_SNIFFERBAR))
			{
				TRACE0("Failed to create toolbar\n");
				return -1;      // fail to create
			}

			// create sub pages
			m_Meters.Create(IDD_METERBOX, this);
			m_SniffDetailsDlg.Create(IDD_SNIFFDETAILS, this);
			m_SniffStatsDlg.Create(IDD_SNIFFSTATS, this);
			m_SniffActivityDlg.Create(IDD_SNIFFACTIVITY, this);
			m_SniffLogDlg.Create(IDD_SNIFFLOG, this);
			m_Meters.ShowWindow(SW_SHOW);

			m_TabMenu.Create(WS_VISIBLE|WS_CHILD|CTCS_AUTOHIDEBUTTONS|CTCS_TOOLTIPS, 
						CRect(0,150,240,170), this, IDC_SNIFFERTAB);

			DWORD dwStyle = m_SniffToolBar.GetButtonStyle(m_SniffToolBar.CommandToIndex(ID_SNIFFER_START));
			m_SniffToolBar.SetButtonStyle(m_SniffToolBar.CommandToIndex(ID_SNIFFER_START), dwStyle | TBBS_CHECKBOX);
			m_SniffToolBar.SetButtonStyle(m_SniffToolBar.CommandToIndex(ID_SNIFFER_PAUSE), dwStyle | TBBS_CHECKBOX);

			m_SniffToolBar.SetFullColorImage(IDR_SNIFFERBAR24, RGB(255, 0, 255), 24, 24);
			RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0);
			m_SniffToolBar.GetToolBarCtrl().EnableButton(ID_SNIFFER_START, TRUE);

			// set up tab menu
			m_TabMenu.InsertItem(0,"Gauge");
			m_TabMenu.InsertItem(1,"Details");
			m_TabMenu.InsertItem(2,"Stats");
			m_TabMenu.InsertItem(3,"Activity");
			//m_TabMenu.InsertItem(4,"Log");

			m_TabMenu.SetItemTooltipText(0, "Buffer usage / Packets recieved");
			m_TabMenu.SetItemTooltipText(1, "API call count");
			m_TabMenu.SetItemTooltipText(2, "Statistics");
			m_TabMenu.SetItemTooltipText(3, "socket stream activity plot");
			//m_TabMenu.SetItemTooltipText(4, "Socket stream log");

			m_TabMenu.SetCurSel(0);

			return bRet;
		}

		//creation code
		int CTraceConsoleDlgBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
		{
			if (CDialogBar::OnCreate(lpCreateStruct) == -1)
				return -1;
			
			return 0;
		}

	/*************************************************************/
	/*			Console Management								 */
	/*************************************************************/

		//update the trace console with a packet buffer
		void CTraceConsoleDlgBar::UpdateConsole(CPacketBuffer &PacketList)
		{
			// basic info
			int PacketsParsed = PacketList.GetTotalPackets();
			int BufferFillSpace = PacketList.GetFillPercent();

			SniffDetails detailstruct;
			PacketList.FillDetailStruct(&detailstruct);

			// update sub pages
			m_SniffDetailsDlg.UpdateDetails(detailstruct);
			m_SniffStatsDlg.UpdateStats(PacketList.GetAvgSize(), PacketList.GetPacketsRecved(), PacketList.GetPacketsSent(), PacketList.GetTotalBytes());
			m_SniffActivityDlg.UpdateGraph();
			m_Meters.UpdateMeters(PacketsParsed, BufferFillSpace);
		}

	/*************************************************************/
	/*			Variable Access									 */
	/*************************************************************/

		//set a pointer to the main status bar object
		VOID CTraceConsoleDlgBar::SetStatusBar(CStatusBar *pStatusBar)
		{
			m_StatusBar = pStatusBar;
		}

		//whether the sniff button is down
		BOOL CTraceConsoleDlgBar::GetSnifferButtonState()
		{
			return m_SnoopBttnState;
		}

/*************************************************************/
/*			CTraceConsoleDlgBar Message Map					 */
/*************************************************************/

IMPLEMENT_DYNAMIC(CTraceConsoleDlgBar, CDialogBar)

BEGIN_MESSAGE_MAP(CTraceConsoleDlgBar, CDialogBar)
	ON_WM_CREATE()
	ON_MESSAGE(WM_INITDIALOG, OnInitDialog)

	//sniff buttons
	ON_COMMAND(ID_SNIFFER_START, OnStartSniffButtonDown)
	ON_COMMAND(ID_SNIFFER_PAUSE, OnPauseSniffButtonDown)
	ON_COMMAND(ID_SNIFFER_STOP, OnStopSniffButtonDown)

	//tab menu
	ON_NOTIFY(CTCN_SELCHANGE, IDC_SNIFFERTAB, OnSelchangeTab)
END_MESSAGE_MAP()

⌨️ 快捷键说明

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