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.
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.
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. }