#include "CaptureUtil.h"
|
|
HWND CaptureUtil::level2Frames[8];
|
std::list<FrameInfo> CaptureUtil::tempFrames;
|
|
BOOL CALLBACK CaptureUtil::EnumChildProc(HWND hwndChild, LPARAM lParam) {
|
//TEXT("AfxWnd100s")
|
char className[100];
|
GetClassNameA(hwndChild, className, 100);
|
if (string(className) == "AfxWnd100s") {
|
RECT rect;
|
GetWindowRect(hwndChild, &rect);
|
bool show= IsWindowVisible(hwndChild);
|
|
if (show&&rect.right - rect.left < 1000&& rect.right - rect.left>400)
|
{
|
FrameInfo info = FrameInfo();
|
info.frame = hwndChild;
|
info.position = rect;
|
tempFrames.push_back(info);
|
}
|
|
/*
|
if ( rect.right - rect.left>2800)
|
{
|
FrameInfo info = FrameInfo();
|
info.frame = hwndChild;
|
info.position = rect;
|
tempFrames.push_back(info);
|
}
|
*/
|
|
}
|
return TRUE;
|
}
|
void CaptureUtil::init(HWND l2win) {
|
tempFrames.clear();
|
HWND root = l2win;
|
|
root = FindWindowEx(root, NULL, TEXT("AfxFrameOrView100s"), NULL);
|
|
EnumChildWindows(root, EnumChildProc, NULL);
|
//¸³Öµ
|
std::list<FrameInfo>::iterator ele;
|
int index = 0;
|
for (ele = tempFrames.begin();ele != tempFrames.end();ele++) {
|
if (index > 7) {
|
break;
|
}
|
level2Frames[index++] = (*ele).frame;
|
}
|
}
|
HWND CaptureUtil::getHWND(int index) {
|
return level2Frames[index];
|
}
|
|
cv::Mat CaptureUtil::capture(int index) {
|
cv::Mat cap = capture(getHWND(index));
|
return cap;
|
}
|
|
|
cv::Mat CaptureUtil::capture(HWND hwnd) {
|
cv::Mat cap = _wss::screen_shot_by_window(hwnd);
|
return cap;
|
}
|