Proc.cpp
上传用户:wpp2016
上传日期:2010-02-01
资源大小:1250k
文件大小:3k
源码类别:

Telnet服务器

开发平台:

Visual C++

  1. // Proc.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "anywhere.h"
  5. #include "Proc.h"
  6. #include "thread1.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CProc dialog
  14. CProc::CProc(CWnd* pParent /*=NULL*/)
  15. : CDialog(CProc::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(CProc)
  18. // NOTE: the ClassWizard will add member initialization here
  19. //}}AFX_DATA_INIT
  20. }
  21. void CProc::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CDialog::DoDataExchange(pDX);
  24. //{{AFX_DATA_MAP(CProc)
  25. DDX_Control(pDX, IDC_LISTPROC, m_btlist);
  26. DDX_Control(pDX, IDCANCEL, m_btquit);
  27. DDX_Control(pDX, IDOK, m_btkill);
  28. DDX_Control(pDX, IDC_PROCLIST, m_proclist);
  29. //}}AFX_DATA_MAP
  30. }
  31. BEGIN_MESSAGE_MAP(CProc, CDialog)
  32. //{{AFX_MSG_MAP(CProc)
  33. ON_BN_CLICKED(IDC_LISTPROC, OnListproc)
  34. ON_MESSAGE(WM_SETACTIVE,OnSetActive)
  35. //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CProc message handlers
  39. void CProc::OnListproc() 
  40. {
  41. CString ask,caption;
  42. ask.LoadString(IDS_ACTION_ASK);
  43. caption.LoadString(IDS_CAPTION);
  44. if (IDYES==MessageBox(ask,caption,MB_YESNO))
  45. {
  46. CWaitCursor wc;
  47. DWORD ThreadId;
  48. CString order="LISTPROC";
  49. strcpy(linkrc.sbuf,order);
  50. linkrc.m_hWnd=GetSafeHwnd();//将listproc对话框句柄付给线程
  51. hSend=CreateThread(NULL,0,SendThread,&linkrc,0,&ThreadId);
  52.     SetWindowText("请稍候,正在向远程机器发出列举进程命令");
  53. m_btquit.EnableWindow(FALSE);
  54. m_btlist.EnableWindow(FALSE);
  55. m_btkill.EnableWindow(FALSE);
  56. }
  57. }
  58. LRESULT CProc::OnSetActive(WPARAM wParam,LPARAM lParam)
  59. {
  60. m_btquit.EnableWindow(TRUE);
  61. m_btlist.EnableWindow(TRUE);
  62. m_btkill.EnableWindow(TRUE);
  63.   if ((BOOL)wParam) {
  64.   CString text=*(CString*)lParam;
  65.   CString order;
  66.   order=text.Left(8);
  67.   text=text.Right(text.GetLength()-8);
  68.   if (order=="KILLPROC") {
  69.   CString sSucmsg,caption;
  70.   sSucmsg.LoadString(IDS_KILLPROC_OK);
  71.   sSucmsg+=parameter;
  72.   caption.LoadString(IDS_CAPTION);
  73.   MessageBox(sSucmsg,caption,MB_OK);
  74.   return 1;
  75.   }//杀掉进程
  76.   else if (order=="LISTPROC") {
  77.   m_proclist.ResetContent();
  78.   ListProc(text);
  79.   return 1;
  80.   }
  81.   }
  82.   return 0;
  83. }
  84. void CProc::ListProc(CString text)
  85. {
  86. BOOL bFinished=FALSE;
  87. int pos;
  88.    while (!bFinished) {
  89.  if ((pos=text.Find("/"))!=-1)
  90.  {
  91. //text1=text.Left(pos);//为名字+长度(目录无长度)
  92. m_proclist.AddString(text.Left(pos));//文件名字
  93. text=text.Right(text.GetLength()-pos-1);
  94. //m_remote.SetItemData(num,1);//为目录
  95.  }
  96. else bFinished=true;
  97.  }//end while
  98.     SetWindowText("进程管理");
  99. }
  100. void CProc::OnOK() 
  101. {
  102. int i=m_proclist.GetCurSel();
  103. if (i==-1) return;
  104. CString ask,caption;
  105. ask.LoadString(IDS_ACTION_ASK);
  106. caption.LoadString(IDS_CAPTION);
  107. if (IDYES==MessageBox(ask,caption,MB_YESNO))
  108. {
  109. //CWaitCursor wc;
  110. DWORD ThreadId;
  111. m_proclist.GetText(i,parameter);
  112. CString order="KILLPROC"+parameter;
  113. strcpy(linkrc.sbuf,order);
  114. linkrc.m_hWnd=GetSafeHwnd();//将listproc对话框句柄付给线程
  115. hSend=CreateThread(NULL,0,SendThread,&linkrc,0,&ThreadId);
  116.     SetWindowText("请稍候,正在向远程机器发出杀掉进程命令");
  117. }
  118. //CDialog::OnOK();
  119. }