| 
					
				 | 
			
			
				@@ -15,11 +15,12 @@ IMPLEMENT_DYNAMIC(CDlgService, CDialogEx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 CDlgService::CDlgService(CWnd* pParent /*=nullptr*/) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	: CDialogEx(IDD_DLG_SERVICE, pParent) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m_bEnd = FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 CDlgService::~CDlgService() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m_bEnd = TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void CDlgService::DoDataExchange(CDataExchange* pDX) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -47,6 +48,7 @@ BEGIN_MESSAGE_MAP(CDlgService, CDialogEx) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	ON_BN_CLICKED(BTN_MI_INIT, &CDlgService::OnBnClickedMiInit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	ON_BN_CLICKED(BTN_SCBC_INIT, &CDlgService::OnBnClickedScbcInit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	ON_WM_SIZE() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ON_NOTIFY(NM_DBLCLK, IDC_LIST_TASK, &CDlgService::OnNMDblclkListTask) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 END_MESSAGE_MAP() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68,7 +70,7 @@ BOOL CDlgService::OnInitDialog() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	SetTimer(1, 10000, NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	std::thread t([](CDlgService *p) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		while (true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		while (!p->m_bEnd) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			std::this_thread::sleep_for(std::chrono::milliseconds(2500)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			{ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -96,16 +98,18 @@ BOOL CDlgService::OnInitDialog() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						p->m_listDevices.SetItemText(nIndex, 2, "掉线"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					else if (it->nStatus == 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						p->m_listDevices.SetItemText(nIndex, 2, "未认证"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 					if (it->nUsageState == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 						p->m_listDevices.SetItemText(nIndex, 4, "空闲"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 					else if (it->nUsageState == 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 						p->m_listDevices.SetItemText(nIndex, 4, "繁忙"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					nIndex++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			std::this_thread::sleep_for(std::chrono::milliseconds(1000)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		OutputDebugString("退出刷新设备线程\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	},this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	t.detach(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	std::thread t2([](CDlgService* p) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		while (!p->m_bEnd) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			std::this_thread::sleep_for(std::chrono::milliseconds(1500)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				CSATClient::GetInstance()->TCPQueryTasks(FALSE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				int nIndex = 0; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -113,21 +117,24 @@ BOOL CDlgService::OnInitDialog() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				TCHAR szValue[MAX_PATH] = { 0 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				for (int i = 0; i < SATData::task_resp.nSize; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					// 任务编号; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					p->m_ctrlTaskId.SetWindowText(_T("")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					p->m_ctrlTaskId.SetWindowText(SATData::task_resp.ssTasks[i].szTaskNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					// 任务状态; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					p->m_lbTaskStatus.SetWindowText(_T("")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					p->m_lbTaskStatus.SetWindowText(SATData::task_resp.ssTasks[i].szStatus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					// 脚本数量; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if (SATData::task_resp.ssTasks[i].nCaseSize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						// 遍历出所有用例; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						TCHAR szIndex[8] = {0}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						for ( int k = 0; k < SATData::task_resp.ssTasks[i].nCaseSize; k++ ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						TCHAR szIndex[8] = { 0 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						for (int k = 0; k < SATData::task_resp.ssTasks[i].nCaseSize; k++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							_itoa_s(k, szIndex, 10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							SATPROTO::CaseInfo& caseInfo = SATData::task_resp.ssTasks[i].ssCases[k]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							p->m_listTask.InsertItem(nIndex, szIndex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							p->m_listTask.SetItemText(nIndex, 1, caseInfo.szCaseName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							p->m_listTask.SetItemText(nIndex, 2, caseInfo.szStatus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							p->m_listTask.SetItemText(nIndex, 3, caseInfo.szCaseLogPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							p->m_listTask.SetItemText(nIndex, 2, caseInfo.szExecStatus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							p->m_listTask.SetItemText(nIndex, 3, caseInfo.szResultStatus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							p->m_listTask.SetItemText(nIndex, 4, caseInfo.szCaseLogPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -135,8 +142,10 @@ BOOL CDlgService::OnInitDialog() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	},this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	t.detach(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		OutputDebugString("退出刷新任务线程\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	t2.detach(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return TRUE;  // return TRUE unless you set the focus to a control 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				  // 异常: OCX 属性页应返回 FALSE 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -155,22 +164,6 @@ void CDlgService::OnPaint() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	dc.FillRect(&rc, &brush); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-HBRUSH CDlgService::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	// TODO:  在此更改 DC 的任何特性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if (nCtlColor == CTLCOLOR_STATIC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		pDC->SetBkMode(TRANSPARENT);//设置背景透明 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//pDC->SetTextColor(RGB(255, 255, 0));//设置字体为黄色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return (HBRUSH)::GetStockObject(NULL_BRUSH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	// TODO:  如果默认的不是所需画笔,则返回另一个画笔 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return hbr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void CDlgService::InitCtrl() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	int nIndex = 0; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -188,10 +181,12 @@ void CDlgService::InitCtrl() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	m_listTask.SetColumnWidth(0, 25); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	m_listTask.InsertColumn(1, "脚本名称"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	m_listTask.SetColumnWidth(1, 130); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	m_listTask.InsertColumn(2, "状态"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m_listTask.InsertColumn(2, "执行状态"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	m_listTask.SetColumnWidth(2, 60); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	m_listTask.InsertColumn(3, "日志"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	m_listTask.SetColumnWidth(3, 55); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m_listTask.InsertColumn(3, "结果状态"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m_listTask.SetColumnWidth(3, 60); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m_listTask.InsertColumn(4, "日志"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m_listTask.SetColumnWidth(4, 55); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	m_listTask.SetExtendedStyle(m_listTask.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	COLORREF color = RGB(0x87, 0xCE, 0xFA); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -218,7 +213,6 @@ void CDlgService::InitCtrl() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// 设置鼠标形状; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	m_btnAddAndroid.SetMouseCursorHand(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	//color = RGB(0x87, 0xCE, 0xFA); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	m_btnMIInit.m_bTransparent = FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	m_btnMIInit.m_bDontUseWinXPTheme = TRUE; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -451,3 +445,22 @@ void CDlgService::OnSize(UINT nType, int cx, int cy) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	AdjustLayout(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// TODO: 在此处添加消息处理程序代码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void CDlgService::OnNMDblclkListTask(NMHDR* pNMHDR, LRESULT* pResult) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// TODO: 在此添加控件通知处理程序代码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	*pResult = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (pNMListView->iItem != -1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CString strLogPath = m_listTask.GetItemText(pNMListView->iItem, 4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 路径不存在,退出; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (!PathFileExists(strLogPath)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ShellExecute(NULL, _T("open"), strLogPath.GetString(), NULL, NULL, SW_SHOW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |