ProcManageDlg.cpp
上传用户:cjw5120
上传日期:2022-05-11
资源大小:5032k
文件大小:7k
源码类别:

网络截获/分析

开发平台:

Visual C++

  1. // ProcManageDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "MyClient.h"
  5. #include "ProcManageDlg.h"
  6. #include "resource.h"
  7. #include "MyClientDlg.h"
  8. #include "comm.h"
  9. #include "TcpTran.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /*
  16.  作者:海啸 lyyer English Name: Jack 
  17.   blog:http://lyyer.blog.sohu.com
  18.   website:http://www.cnGSG.com
  19.   海啸网络安全组织
  20. */
  21. static int nrItemNum = 0; 
  22. static DWORD procitem = 0;
  23. //extern SOCKET g__clientsocket ;
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CProcManageDlg dialog
  26. CProcManageDlg *m_procmanagedlg = NULL;
  27. DWORD WINAPI InitList(std::vector<PROCESSINFO *> pVecTor)
  28. {
  29. //std::vector<PROCESSINFO> *pVecTor = (std::vector<PROCESSINFO>) lp;
  30.     //std::vector<PROCESSINFO> *pVecTor =(vector<PROCESSINFO> ) lp;
  31.  
  32. m_procmanagedlg->m_list.DeleteAllItems();
  33. for(DWORD i = 0; i < pVecTor.size(); i++)
  34. {
  35.         CString tmp = _T("");
  36. tmp.Format("%d",pVecTor[i]->PID); //****得到vector[i] 里的结构的一部分**** //pVecTor->at(i).PID
  37.     m_procmanagedlg->m_list.InsertItem(i,"");
  38.     m_procmanagedlg->m_list.SetItemText(i,0,tmp);
  39.     
  40.     tmp.Format("%s",pVecTor[i]->ProcName);
  41.     m_procmanagedlg->m_list.InsertItem(i,(const char *)1);
  42.       m_procmanagedlg->m_list.SetItemText(i,1,tmp);
  43.      tmp.Format("%s",pVecTor[i]->ProcPath); 
  44.     m_procmanagedlg->m_list.InsertItem(i,(const char *)2);
  45.     m_procmanagedlg->m_list.SetItemText(i,2,tmp);
  46. }
  47. return 0;
  48. }
  49. CProcManageDlg::CProcManageDlg(CWnd* pParent /*=NULL*/)
  50. : CDialog(CProcManageDlg::IDD, pParent)
  51. {
  52. m_procmanagedlg=this;
  53. //{{AFX_DATA_INIT(CProcManageDlg)
  54. // NOTE: the ClassWizard will add member initialization here
  55. //}}AFX_DATA_INIT
  56. }
  57. void CProcManageDlg::DoDataExchange(CDataExchange* pDX)
  58. {
  59. CDialog::DoDataExchange(pDX);
  60. //{{AFX_DATA_MAP(CProcManageDlg)
  61. DDX_Control(pDX, IDC_LIST, m_list);
  62. //}}AFX_DATA_MAP
  63. }
  64. void OnStart()
  65. {
  66. COMMAND m_command;
  67. int len = 0;
  68.     //extern  SOCKET g__clientsocket ;
  69. memset((char  *)&m_command, 0,sizeof(m_command));
  70.     m_command.wCmd = CMD_PROCESS_MANAGE;
  71.     m_command.DataSize = 0;
  72. CTcpTran m_tcptran ; 
  73.     int buf = 0; 
  74.     
  75. len = m_tcptran.mysend(m_procmanagedlg->ClientSocket,(char *)&m_command,sizeof(m_command),0,60);
  76.     if (len<0)
  77. {
  78. len = m_tcptran.mysend(m_procmanagedlg->ClientSocket,(char *)&m_command,sizeof(m_command),0,60);    
  79.     }
  80. int processlen = m_tcptran.myrecv(m_procmanagedlg->ClientSocket,(char *)&buf,sizeof(int),0,60,NULL,false);
  81. if (processlen>0)
  82. {
  83. std::vector<PROCESSINFO *> pProcInfo;
  84.         PROCESSINFO *tmp = new PROCESSINFO; //一样的问题 
  85. // 
  86.  
  87.         for(int i=0;i<buf;i++)
  88. {
  89. tmp = new PROCESSINFO;
  90. memset(tmp, 0,sizeof(PROCESSINFO));
  91. m_tcptran.myrecv(m_procmanagedlg->ClientSocket,(char *)tmp,sizeof(PROCESSINFO),0,60,0,false);
  92. pProcInfo.push_back(tmp);
  93. //delete tmp;
  94. }
  95. InitList(pProcInfo);
  96. }
  97. }
  98. BOOL CProcManageDlg::OnInitDialog()
  99. {
  100. CDialog::OnInitDialog();
  101. // TODO: Add extra initialization here
  102. LONG lStyle = m_list.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
  103. lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP;
  104. m_list.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,(LPARAM)lStyle);
  105. LV_COLUMN lvc;
  106. lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH /*| LVCF_FMT*/;
  107. m_list.DeleteAllItems();
  108.   m_list.InsertColumn(0,"进程ID",LVCFMT_LEFT,50);  
  109.   m_list.InsertColumn(1,"进程名称",LVCFMT_LEFT,110);
  110.   m_list.InsertColumn(2,"路径",LVCFMT_LEFT,360);
  111. OnStart();
  112. return TRUE;
  113. }
  114. BEGIN_MESSAGE_MAP(CProcManageDlg, CDialog)
  115. ON_WM_CONTEXTMENU()
  116. //{{AFX_MSG_MAP(CProcManageDlg)
  117. ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
  118. ON_COMMAND(ID_MANAGEPROC_REFLUSH, OnManageprocReflush)
  119. ON_COMMAND(ID_MANAGEPROC_KILL, OnManageprocKill)
  120. //}}AFX_MSG_MAP
  121. END_MESSAGE_MAP()
  122. /////////////////////////////////////////////////////////////////////////////
  123. // CProcManageDlg message handlers
  124. void CProcManageDlg::OnContextMenu(CWnd*, CPoint point)
  125. {
  126. // CG: This block was added by the Pop-up Menu component { if (point.x == -1 && point.y == -1){ //keystroke invocation CRect rect; GetClientRect(rect); ClientToScreen(rect); point = rect.TopLeft(); point.Offset(5, 5); } CMenu menu; VERIFY(menu.LoadMenu(CG_IDR_POPUP_PROC_MANAGE_DLG)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); CWnd* pWndPopupOwner = this; while (pWndPopupOwner->GetStyle() & WS_CHILD) pWndPopupOwner = pWndPopupOwner->GetParent(); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner); }
  127. }
  128. void CProcManageDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
  129. {
  130. // TODO: Add your control notification handler code here
  131. NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
  132.     
  133. if(pNMListView->iItem != -1)
  134.     {
  135. //调试用代码
  136. ////////////////////////////////////////////////////////////////////////
  137.         //        CString strtemp;
  138.         //        strtemp.Format("单击的是第%d行第%d列",
  139.         //                        pNMListView->iItem, pNMListView->iSubItem);
  140.         //        AfxMessageBox(strtemp);
  141. ////////////////////////////////////////////////////////////////////////
  142.                 procitem  = pNMListView->iItem;
  143.     }
  144. *pResult = 0;
  145. }
  146. void CProcManageDlg::OnManageprocReflush() 
  147. {
  148. // TODO: Add your command handler code here
  149. OnStart();
  150. }
  151. void CProcManageDlg::OnManageprocKill() 
  152. {
  153. // TODO: Add your command handler code here
  154. COMMAND m_command;
  155. int len = 0;
  156.     //extern  SOCKET g__clientsocket ;
  157. memset((char  *)&m_command, 0,sizeof(m_command));
  158.     m_command.wCmd = CMD_PROCESS_KILL;
  159.    
  160.     // get PID 
  161. CString id;
  162. DWORD tmp_pid = 0;
  163. id = m_list.GetItemText(procitem,0);
  164. // id.Format("%d",tmp_pid);
  165. tmp_pid = _ttoi(id);
  166. m_command.DataSize = tmp_pid;
  167. CTcpTran m_tcptran ; 
  168.     int buf = 0; 
  169.     
  170. len = m_tcptran.mysend(m_procmanagedlg->ClientSocket,(char *)&m_command,sizeof(m_command),0,60);
  171.     if (len<0)
  172. {
  173. len = m_tcptran.mysend(m_procmanagedlg->ClientSocket,(char *)&m_command,sizeof(m_command),0,60);    
  174.     }
  175. int processlen = m_tcptran.myrecv(m_procmanagedlg->ClientSocket,(char *)&buf,sizeof(int),0,60,NULL,false);
  176. if (processlen>0)
  177. {
  178. std::vector<PROCESSINFO *> pProcInfo;
  179.         PROCESSINFO *tmp = new PROCESSINFO; //一样的问题 
  180. // 
  181.  
  182.         for(int i=0;i<buf;i++)
  183. {
  184. tmp = new PROCESSINFO;
  185. memset(tmp, 0,sizeof(PROCESSINFO));
  186. m_tcptran.myrecv(m_procmanagedlg->ClientSocket,(char *)tmp,sizeof(PROCESSINFO),0,60,0,false);
  187. pProcInfo.push_back(tmp);
  188. //delete tmp;
  189. }
  190. InitList(pProcInfo);
  191. }
  192. }