获取Windows任务管理器中应用程序和进程任务

获取Windows任务管理器中应⽤程序和进程任务
1. 获取应⽤程序:
2.
3. #pragma once
4. #include "afxcmn.h"
5.
6. /*判断窗⼝是否是正常运⾏还是未响应的*/
7. typedef  BOOL  (WINAPI *PROCISHUNGAPPWINDOW)( HWND );
8. typedef  BOOL  (WINAPI *PROCISHUNGTHREAD)( DWORD );
9.
10. // CEnumWindowsDlg 对话框
11.
12. class  CEnumWindowsDlg :  public  CDialog
13. {
14.    DECLARE_DYNAMIC(CEnumWindowsDlg)
15.
16. public :
17.    CEnumWindowsDlg(CWnd* pParent = NULL);    // 标准构造函数
18.      virtual  ~CEnumWindowsDlg();
19.
20. // 对话框数据
21.      enum  { IDD = IDD_ENUMWINDOWS_DIALOG };
压线板22.
23. protected :
24.      virtual  void  DoDataExchange(CDataExchange* pDX);    // DDX/DDV ⽀持
25.
26.    DECLARE_MESSAGE_MAP()
27. public :
28.    afx_msg  void  OnDestroy();
29.
30.      /*刷新CListCtrl上的任务*/
31.    afx_msg  void  OnBnClickedButtonRefrush();
32.
33.      virtual  BOOL  OnInitDialog();
34. public :
35.    CListCtrl m_ListWnds;
36.    CImageList m_ImgList;
37.
38.    PROCISHUNGAPPWINDOW m_pIsHungAppWindow;
39.    PROCISHUNGTHREAD m_pIsHungThread;
40.
41.      /* 判断当前操作系统是否是Windows NT/2000以上
42.    不同的操作系统,判断程序是否运⾏正常的⽅式是不⼀样的*/
43.      BOOL  m_bIsNT;
44.      bool  m_bLoadIcon;    //是否加载icon
45.
46. private :
47.      BOOL  GetOSVersion();
48.
49.      BOOL  static  CALLBACK enumProc( HWND  hwnd,  LPARAM  lParam);
50.      HICON  static  GetWindowsIcon( HWND  hwnd);
51.
52.      BOOL  bWindowsRun( HWND  hwnd);  //是否在运⾏
单列调心滚子轴承53.      void  CloseHwnd( HWND  hwnd);
54.      BOOL  static  CALLBACK TerminateAppEnum(  HWND  hwnd,  LPARAM  lParam );
55.      DWORD  WINAPI TerminateApp(  DWORD  dwPID,  DWORD  dwTimeout );
56.
57.      void  InsertListItem( HWND  hwnd,CString strName);
58.      void  SaveIcon( HICON    hIconToSave,    LPCTSTR    sIconFileName);
59.
60. };
61.
1. // EnumWindowsDlg.cpp : 实现⽂件
2. //
3.
4. #include "stdafx.h"
5. #include "VNCServerTestMFC.h"
6. #include "EnumWindowsDlg.h"
7.
8. /*定义关闭窗⼝返回值*/
9. #define TA_FAILED (0x0L)
10. #define TA_SUCCESS_KILL (0x2L)
11. #define TA_SUCCESS_CLEAN (0x1L)
12.
13.
14. // CEnumWindowsDlg 对话框
15.
16. IMPLEMENT_DYNAMIC(CEnumWindowsDlg, CDialog)
17.
18. CEnumWindowsDlg::CEnumWindowsDlg(CWnd* pParent  /*=NULL*/ )
涡旋振荡器19.    : CDialog(CEnumWindowsDlg::IDD, pParent)
20.    ,m_bLoadIcon( true )
21. {
22.
23. }
24.
25. CEnumWindowsDlg::~CEnumWindowsDlg()
26. {
27. }
28.
29. void  CEnumWindowsDlg::DoDataExchange(CDataExchange* pDX)
30. {
31.    CDialog::DoDataExchange(pDX);
32.    DDX_Control(pDX, IDC_LIST_WINDOWS, m_ListWnds);
33. }
34.
35.
36. BEGIN_MESSAGE_MAP(CEnumWindowsDlg, CDialog)
37.    ON_WM_DESTROY()
38.    ON_BN_CLICKED(IDC_BUTTON_REFRUSH, &CEnumWindowsDlg::OnBnClickedButtonRefrush)
脚踏淋浴器39. END_MESSAGE_MAP()
40.
41.
42. // CEnumWindowsDlg 消息处理程序
43.
44. void  CEnumWindowsDlg::OnDestroy()
45. {
46.    CDialog::OnDestroy();
47.
48.      // TODO: 在此处添加消息处理程序代码
49.      if (m_ImgList.GetSafeHandle())
50.    {
51.        m_ImgList.DeleteImageList();
52.    }
53. }
54.
55. BOOL  CEnumWindowsDlg::OnInitDialog()
56. {
57.    CDialog::OnInitDialog();
58.
59.      // TODO:  在此添加额外的初始化
60.    CRect rect;
61.    m_ListWnds.GetClientRect(rect);
62.
63.      //获得原有风格
64.      DWORD  dwStyle = ::GetWindowLong(m_ListWnds.m_hWnd, GWL_STYLE);
65.    dwStyle &= ~(LVS_TYPEMASK);
66.    dwStyle &= ~(LVS_EDITLABELS);
67.      //设置新风格
68.    SetWindowLong(m_ListWnds.m_hWnd, GWL_STYLE, dwStyle|LVS_REPORT|LVS_NOLABELWRAP|LVS_SHOWSELALWAYS);
69.
70.      //设置扩展风格
71.      DWORD  styles =LVS_EX_FULLROWSELECT|LVS_EX_SUBITEMIMAGES;
72.    ListView_SetExtendedListViewStyleEx(m_ListWnds.m_hWnd, styles, styles );
73.
74.    LV_COLUMN lvcolumn;
75.      TCHAR  rgtsz[2][10] = {_T( "任务" ), _T( "状态" )};
76.      for ( int  i=0;i<2;i++)
77.    {
78.        lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
79.        lvcolumn.fmt = LVCFMT_LEFT;
80.        lvcolumn.pszText = rgtsz[i];
81.        lvcolumn.iSubItem = i;
82.        lvcolumn.iOrder = i;
83.          if (i==0)
84.            = rect.Width()*3/5 ;
85.          else
86.            = rect.Width()*2/5;
87.        m_ListWnds.InsertColumn(i, &lvcolumn);
88.    }
89.
90.    GetOSVersion();
91.
92.    OnBnClickedButtonRefrush();
93.
94.
95.      return  TRUE;  // return TRUE unless you set the focus to a control
96.      // 异常: OCX 属性页应返回 FALSE
97. }
98. void  CEnumWindowsDlg::SaveIcon( HICON    hIconToSave,    LPCTSTR    sIconFileName)
99. {
100.      if (hIconToSave==NULL  ||  sIconFileName==NULL)
101.          return ;
102.      //warning:  this  code  snippet  is  not  bullet  proof.
103.      //do  error  check  by  yourself  [masterz]
大电流导线
104.    PICTDESC  picdesc;
105.    picdesc.cbSizeofstruct  =    sizeof (PICTDESC);
106.    picdesc.picType  =  PICTYPE_ICON  ;
107.    picdesc.icon.hicon  =  hIconToSave;
108.    IPicture*  pPicture=NULL;
109.    OleCreatePictureIndirect(&picdesc,  IID_IPicture,  TRUE,( VOID **)&pPicture);
110.    LPSTREAM  pStream;
111.    CreateStreamOnHGlobal(NULL,TRUE,&pStream);
112.      LONG    size;
113.      HRESULT    hr=pPicture->SaveAsFile(pStream,TRUE,&size);
114.      char    pathbuf[1024];
115.    strcpy(pathbuf,sIconFileName);
116.    CFile  iconfile;
117.    iconfile.Open(pathbuf,  CFile::modeCreate|CFile::modeWrite);
118.    LARGE_INTEGER  li;
119.    li.HighPart  =0;
120.    li.LowPart  =0;
121.    ULARGE_INTEGER  ulnewpos;
122.    pStream->Seek(  li,STREAM_SEEK_SET,&ulnewpos);
123.      ULONG    uReadCount  =  1;
124.      while (uReadCount>0)
125.    {
126.        pStream->Read(pathbuf, sizeof (pathbuf),&uReadCount);
127.          if (uReadCount>0)
128.            iconfile.Write(pathbuf,uReadCount);
129.    }
130.    pStream->Release();
131.    iconfile.Close();
132. }
133. BOOL  CALLBACK CEnumWindowsDlg::enumProc( HWND  hwnd,  LPARAM  lParam)
134. {
135.      if  (hwnd == NULL)
136.    {
137.          return  FALSE;
138.    }
139.
140.    CEnumWindowsDlg * pDlg = (CEnumWindowsDlg *)lParam;
141.      if  ( hwnd == pDlg->m_hWnd ) //这是为了不把⾃⼰这个程序列出来
142.    {
143.          return  TRUE;
144.    }
145.
146.      if  (::IsWindow(hwnd) && ::IsWindowVisible(hwnd) && /
147.        ((GetWindowLong(hwnd, GWL_EXSTYLE)&WS_EX_TOOLWINDOW)!=WS_EX_TOOLWI
NDOW)&&/ 148.        (GetWindowLong(hwnd, GWL_HWNDPARENT)==0))
149.    {
150.          TCHAR  szCap[255] = {0};
151.
152.        ::GetWindowText(hwnd, szCap, 255);
153.          if  (strlen(szCap) == 0)
154.        {
三维数据采集
155.              return  TRUE;
156.        }
157.
158.        CString strText( "" );
159.        pDlg->GetParent()->GetWindowText(strText);
160.          if  (lstrcmp(strText,szCap) == 0)
161.        {
162.              return  TRUE;
163.        }
164.        TRACE( "%s/n" ,szCap);
165.
166.        pDlg->InsertListItem(hwnd,szCap);
167.    }

本文发布于:2024-09-22 13:22:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/160790.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   风格   任务   数据   消息   是否   程序代码   添加
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议