From 60feedf43a35a9ca69d05095a01c5d1797b1bdc3 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 09 九月 2022 18:47:14 +0800
Subject: [PATCH] '完善'

---
 ConsoleApplication/THSActionUtil.cpp |   65 ++++++++++++++++++++++++++++++--
 1 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/ConsoleApplication/THSActionUtil.cpp b/ConsoleApplication/THSActionUtil.cpp
index a3f4ca9..26da8ec 100644
--- a/ConsoleApplication/THSActionUtil.cpp
+++ b/ConsoleApplication/THSActionUtil.cpp
@@ -524,7 +524,7 @@
 			//关闭按钮
 			Sleep(100);
 			HWND close = FindWindowA(0, "添加股票");
-			SendMessage(close, WM_CLOSE, 0, 0);
+			PostMessage(close, WM_CLOSE, 0, 0);
 			break;
 		}
 	}
@@ -667,7 +667,7 @@
 		}
 	}
 
-	if (contentStartRow < 0) {
+	if (contentStartRow < 0|| contentStartRow>rows-100) {
 		throw string("起始行分隔出错(18)");
 	}
 
@@ -1039,7 +1039,7 @@
 	}
 
 	contentEndRow = contentStartRow + 50;
-
+	
 	//分隔列
 	list<int*> dataColIndexs;
 	int startf = -1;
@@ -1402,7 +1402,62 @@
 
 	return fresultList;
 
-}void THSActionUtil::clearPlateCodes(HWND hwnd)
+}
+
+cv::Mat getTHSTimeCapture() {
+	HWND hwnd = THSActionUtil::getMainWin();
+	if (hwnd <= 0) {
+		throw string("未找到同花顺主页");
+	}
+	HWND bar = FindWindowEx(hwnd, NULL, TEXT("msctls_statusbar32"), NULL);
+	int count = 0;
+	int lastTop = 0;
+	HWND lastBar = 0;
+	do {
+		count++;
+		RECT rect;
+		GetWindowRect(bar, &rect);
+		if (rect.top > lastTop) {
+			lastTop = rect.top;
+			lastBar = bar;
+		}
+		bar = FindWindowEx(hwnd, bar, TEXT("msctls_statusbar32"), NULL);
+		if (count > 10|| bar<=0) {
+			bar = 0;
+			break;
+		}
+	} while (TRUE);
+
+	if (lastBar <= 0) {
+		throw string("未找到同花顺时间窗口");
+	}
+
+	if (lastBar > 0) {
+		cv::Mat  mat = CaptureUtil::capture(lastBar);
+		if (mat.cols > 100) {
+			mat = cv::Mat(mat, cv::Rect(mat.cols - 80, 0, 80, mat.rows));
+			mat = ImgUtil::grayImage(mat);
+			return mat;
+		}
+	}
+
+	throw string("未找到同花顺时间截图获取失败");
+
+}
+
+bool THSActionUtil::thsIsDead()
+{
+	cv::Mat oldMat= getTHSTimeCapture();
+	Sleep(1200);
+	cv::Mat newMat = getTHSTimeCapture();
+
+	if (ImgUtil::isImgSame(oldMat, newMat)) {
+		return TRUE;
+	}
+
+	return FALSE;
+}
+void THSActionUtil::clearPlateCodes(HWND hwnd)
 {
 	HWND content = FindWindowExA(hwnd, NULL, "AfxFrameOrView100s", NULL);
 	for (int i = 0;i < 15;i++)
@@ -1545,7 +1600,7 @@
 void THSActionUtil::addTargetCodes(list<std::string> codeList, RecognitionManager* recognitionManager)
 {
 	//获取同花顺主页
-	HWND win = getMainWin();
+	HWND win = getSecondWindow();
 	Win32Util::focus(win);
 	//快捷键打开板块
 	Win32Util::keyboardNum("51", 200);

--
Gitblit v1.8.0