MainFrm.cpp
上传用户:xuemeng126
上传日期:2022-07-05
资源大小:454k
文件大小:7k
源码类别:

系统编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "BehaviorMon.h"
  5. #include "BehaviorMonView.h" 
  6. #include "MainFrm.h"
  7. #include <afxdlgs.h>
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMainFrame
  15. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  16. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  17. //{{AFX_MSG_MAP(CMainFrame)
  18. ON_WM_CREATE()
  19. ON_COMMAND(ID_MENUITEM_HOOK, OnMenuitemHook)
  20. ON_COMMAND(ID_MENUITEM_PROCESSNAME, OnMenuitemProcessname)
  21. ON_COMMAND(ID_TOOLBAR_BUTTON_CLEAR, OnToolbarButtonClear)
  22. ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
  23. ON_COMMAND(ID_MENUITEM_UNHOOK, OnMenuitemUnhook)
  24. //}}AFX_MSG_MAP
  25. END_MESSAGE_MAP()
  26. static UINT indicators[] =
  27. {
  28. ID_SEPARATOR,           // status line indicator
  29. ID_INDICATOR_CAPS,
  30. ID_INDICATOR_NUM,
  31. ID_INDICATOR_SCRL,
  32. };
  33. /////////////////////////////////////////////////////////////////////////////
  34. // CMainFrame construction/destruction
  35. CMainFrame::CMainFrame()
  36. {
  37. // TODO: add member initialization code here
  38. }
  39. CMainFrame::~CMainFrame()
  40. {
  41. }
  42. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  43. {
  44. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  45. return -1;
  46. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  47. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  48. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  49. {
  50. TRACE0("Failed to create toolbarn");
  51. return -1;      // fail to create
  52. }
  53. if (!m_wndStatusBar.Create(this) ||
  54. !m_wndStatusBar.SetIndicators(indicators,
  55.   sizeof(indicators)/sizeof(UINT)))
  56. {
  57. TRACE0("Failed to create status barn");
  58. return -1;      // fail to create
  59. }
  60. // TODO: Delete these three lines if you don't want the toolbar to
  61. //  be dockable
  62. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  63. EnableDocking(CBRS_ALIGN_ANY);
  64. DockControlBar(&m_wndToolBar);
  65. CToolTipCtrl tooltipctrl;
  66. CRect rect;
  67. CToolBarCtrl   *toolbarctrl=(CToolBarCtrl*)&m_wndToolBar.GetToolBarCtrl();   
  68. toolbarctrl->EnableButton(ID_TOOLBAR_BUTTON_CLEAR,TRUE);    
  69. //  tooltipctrl.Create(this, TTS_ALWAYSTIP);
  70. //  m_wndToolBar.GetToolBarCtrl().GetItemRect(8, rect);
  71. //  tooltipctrl.AddTool(&m_wndToolBar,"test", rect, ID_TOOLBAR_BUTTON_CLEAR);
  72. //  tooltipctrl.Activate(TRUE);
  73. //  toolbarctrl->SetToolTips(&tooltipctrl);
  74. //  CToolTipCtrl*   aa   =   toolbarctrl->GetToolTips()->;
  75. //  aa->UpdateTipText("dkdkd",&m_wndToolBar,ID_TOOLBAR_BUTTON_CLEAR);
  76. //  tooltipctrl.Create(this, TTS_ALWAYSTIP);
  77. //  m_wndToolBar.GetToolBarCtrl().GetItemRect(8, rect);
  78. //  tooltipctrl.AddTool(&m_wndToolBar,"test", rect, ID_TOOLBAR_BUTTON_CLEAR);
  79. //  tooltipctrl.UpdateTipText("test",&m_wndToolBar,ID_TOOLBAR_BUTTON_CLEAR);
  80. //  tooltipctrl.Activate(TRUE);
  81. // 
  82. //  toolbarctrl->EnableToolTips();
  83. //  toolbarctrl->SetToolTips(&tooltipctrl);
  84. //设置标题
  85. //SendMessage(WM_SYSCOMMAND,   SC_ZOOM,   0);
  86. this->SetWindowText("程序行为监控器 BehaviorMon  http://hi.baidu.com/shineastdh");  
  87. return 0;
  88. }
  89. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  90. {
  91. if( !CFrameWnd::PreCreateWindow(cs) )
  92. return FALSE;
  93. // TODO: Modify the Window class or styles here by modifying
  94. //  the CREATESTRUCT cs 
  95. //程序对你的样式框架重绘
  96. cs.style &= ~FWS_ADDTOTITLE; 
  97. cs.cx   =   800;   
  98. cs.cy   =   600;  
  99. return TRUE;
  100. }
  101. /////////////////////////////////////////////////////////////////////////////
  102. // CMainFrame diagnostics
  103. #ifdef _DEBUG
  104. void CMainFrame::AssertValid() const
  105. {
  106. CFrameWnd::AssertValid();
  107. }
  108. void CMainFrame::Dump(CDumpContext& dc) const
  109. {
  110. CFrameWnd::Dump(dc);
  111. }
  112. #endif //_DEBUG
  113. /////////////////////////////////////////////////////////////////////////////
  114. // CMainFrame message handlers
  115. BOOL CMainFrame::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
  116. {
  117. // TODO: Add your specialized code here and/or call the base class
  118. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  119. }
  120. void CMainFrame::OnMenuitemHook() 
  121. {
  122. // TODO: Add your command handler code here
  123. CFrameWnd   *   pFrameWnd=(CFrameWnd*)AfxGetMainWnd();   
  124. CBehaviorMonView *   pView=(CBehaviorMonView *)pFrameWnd->GetActiveFrame()->GetActiveView();
  125. pView->OnButtonHook();
  126. }
  127. void CMainFrame::OnMenuitemUnhook() 
  128. {
  129. // TODO: Add your command handler code here
  130. CFrameWnd   *   pFrameWnd=(CFrameWnd*)AfxGetMainWnd();   
  131. CBehaviorMonView *   pView=(CBehaviorMonView *)pFrameWnd->GetActiveFrame()->GetActiveView();
  132. pView->OnButtonUnhook();
  133. }
  134. CString CMainFrame::ShowSelectDirectoryDlg(const   CString   &   strDlgTitle)   
  135. {     
  136. char   szDir[MAX_PATH];   
  137. BROWSEINFO   bi;   
  138. ITEMIDLIST   *pidl;   
  139.     
  140. bi.hwndOwner   =   this->m_hWnd;   
  141. bi.pidlRoot   =   NULL;   
  142. bi.pszDisplayName   =   szDir;   
  143. bi.lpszTitle   =   strDlgTitle;   
  144. bi.ulFlags   =   BIF_RETURNONLYFSDIRS;   
  145. bi.lpfn   =   NULL;   
  146. bi.lParam   =   0;   
  147. bi.iImage   =   0;   
  148.     
  149. pidl   =   SHBrowseForFolder(&bi);   
  150. if(pidl   ==   NULL)   
  151. return   _T("");   
  152. if(!SHGetPathFromIDList(pidl,   szDir))   
  153. return   _T("");   
  154. return   CString(szDir);   
  155. }
  156. void CMainFrame::OnMenuitemProcessname() 
  157. //ShowSelectDirectoryDlg("SSS");
  158. /*CFileDialog( 
  159. BOOL bOpenFileDialog, 
  160. LPCTSTR lpszDefExt = NULL, 
  161. LPCTSTR lpszFileName = NULL, 
  162. DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
  163. LPCTSTR lpszFilter = NULL, 
  164. CWnd* pParentWnd = NULL );*/
  165. static char BASED_CODE szFilter[] = "Exe Files (*.exe)|*.exe|All Files (*.*)|*.*||";
  166. CFileDialog *dialog_processname= new CFileDialog(TRUE,
  167. NULL,
  168. NULL,
  169. OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  170. szFilter,
  171. NULL);
  172. dialog_processname->DoModal(); 
  173. CString filename=dialog_processname->GetPathName();
  174. if(filename.GetLength()==0)
  175. {
  176. AfxMessageBox("请选定要监控的文件!n");
  177. OnMenuitemProcessname();
  178. }
  179. else
  180. AfxMessageBox("选定文件将被行为监控!n"+filename);
  181. //得到选择的exe文件名后,告诉驱动来监控该程序的行为
  182. CFrameWnd   *   pFrameWnd=(CFrameWnd*)AfxGetMainWnd();   
  183. CBehaviorMonView *   pView=(CBehaviorMonView *)pFrameWnd->GetActiveFrame()->GetActiveView();
  184. pView->tell_driver_processname(filename);
  185. }
  186. void CMainFrame::OnToolbarButtonClear() 
  187. {
  188. // TODO: Add your command handler code here
  189. CFrameWnd   *   pFrameWnd=(CFrameWnd*)AfxGetMainWnd();   
  190. CBehaviorMonView *   pView=(CBehaviorMonView *)pFrameWnd->GetActiveFrame()->GetActiveView();
  191. pView->clear_list();
  192. }
  193. void CMainFrame::OnFileOpen() 
  194. {
  195. // TODO: Add your command handler code here
  196. static char BASED_CODE szFilter[] = "Exe Files (*.exe)|*.exe|All Files (*.*)|*.*||";
  197. CFileDialog *dialog_processname= new CFileDialog(TRUE,
  198. NULL,
  199. NULL,
  200. OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  201. szFilter,
  202. NULL);
  203. dialog_processname->DoModal(); 
  204. CString filename=dialog_processname->GetPathName();
  205. if(filename.GetLength()==0)
  206. {
  207. AfxMessageBox("请选定要监控的文件!n");
  208. OnMenuitemProcessname();
  209. }
  210. else
  211. AfxMessageBox("选定文件将被行为监控!n"+filename);
  212. //得到选择的exe文件名后,告诉驱动来监控该程序的行为
  213. CFrameWnd   *   pFrameWnd=(CFrameWnd*)AfxGetMainWnd();   
  214. CBehaviorMonView *   pView=(CBehaviorMonView *)pFrameWnd->GetActiveFrame()->GetActiveView();
  215. pView->tell_driver_processname(filename);
  216. }