From 053206b414666ed00dffa53b90c7d338e7e4af24 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 7 Oct 2022 01:05:27 +0200 Subject: [PATCH] detect movie windows --- src/utils.c | 13 ++++++++++++- src/winapi_hooks.c | 29 ++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/utils.c b/src/utils.c index 238a5c7..353bf36 100644 --- a/src/utils.c +++ b/src/utils.c @@ -426,7 +426,18 @@ BOOL CALLBACK util_enum_child_proc(HWND hwnd, LPARAM lparam) pos.top); */ - if (g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE) + char title[MAX_PATH] = { 0 }; + GetWindowTextA(hwnd, title, sizeof(title) - 1); + + char class_name[MAX_PATH] = { 0 }; + GetClassNameA(hwnd, class_name, sizeof(class_name) - 1); + + //TRACE_EXT(" AVIWINDOW class=%s, name=%s\n", class_name, title); + + if (g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE || + strcmp(title, "ActiveMovie Window") == 0 || + strcmp(class_name, "AVIWnd32") == 0 || + strcmp(class_name, "MCIWndClass") == 0) { LONG style = real_GetWindowLongA(hwnd, GWL_EXSTYLE); diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index 8b21404..f90841d 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -561,8 +561,19 @@ BOOL WINAPI fake_StretchBlt( { HWND hwnd = WindowFromDC(hdcDest); + char class_name[MAX_PATH] = { 0 }; + + if (g_ddraw && g_ddraw->hwnd && hwnd != g_ddraw->hwnd) + { + GetClassNameA(hwnd, class_name, sizeof(class_name) - 1); + } + if (g_ddraw && g_ddraw->hwnd && - (hwnd == g_ddraw->hwnd || (g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE && IsChild(g_ddraw->hwnd, hwnd)))) + (hwnd == g_ddraw->hwnd || + (IsChild(g_ddraw->hwnd, hwnd) && + (g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE || + strcmp(class_name, "AVIWnd32") == 0 || + strcmp(class_name, "MCIWndClass") == 0)))) { if (g_ddraw->primary && (g_ddraw->primary->bpp == 16 || g_ddraw->primary->bpp == 32 || g_ddraw->primary->palette)) { @@ -571,7 +582,7 @@ BOOL WINAPI fake_StretchBlt( if (primary_dc) { - BOOL result = + BOOL result = real_StretchBlt(primary_dc, xDest, yDest, wDest, hDest, hdcSrc, xSrc, ySrc, wSrc, hSrc, rop); dds_ReleaseDC(g_ddraw->primary, primary_dc); @@ -579,19 +590,19 @@ BOOL WINAPI fake_StretchBlt( return result; } } - else if (g_ddraw->width > 0) + else if (g_ddraw->width > 0 && g_ddraw->render.hdc) { return real_StretchBlt( - hdcDest, + g_ddraw->render.hdc, xDest + g_ddraw->render.viewport.x, yDest + g_ddraw->render.viewport.y, (int)(wDest * g_ddraw->render.scale_w), (int)(hDest * g_ddraw->render.scale_h), - hdcSrc, - xSrc, - ySrc, - wSrc, - hSrc, + hdcSrc, + xSrc, + ySrc, + wSrc, + hSrc, rop); } }