https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f37b94ba391b58f046699…
commit f37b94ba391b58f0466993a1483ab0942771c365
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Thu Jun 3 14:49:49 2021 +0900
Commit: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
CommitDate: Thu Jun 3 14:49:49 2021 +0900
[SHELL32_APITEST] ShellExecCmdLine: Close Notepad windows
By using newly added CloseNotepads function, close the Notepad window.
CORE-17351
---
.../rostests/apitests/shell32/ShellExecCmdLine.cpp | 51 ++++++++++++++--------
1 file changed, 33 insertions(+), 18 deletions(-)
diff --git a/modules/rostests/apitests/shell32/ShellExecCmdLine.cpp
b/modules/rostests/apitests/shell32/ShellExecCmdLine.cpp
index 1ec15fa02c2..b9c349e3d7e 100644
--- a/modules/rostests/apitests/shell32/ShellExecCmdLine.cpp
+++ b/modules/rostests/apitests/shell32/ShellExecCmdLine.cpp
@@ -404,6 +404,35 @@ static const TEST_ENTRY s_entries[] =
{ __LINE__, S_OK, TRUE, NULL,
L"shell:::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}", NULL },
};
+static BOOL CloseNotepads(BOOL bRetry, INT nCount = 10)
+{
+#define INTERVAL 100
+ BOOL bFound = FALSE;
+ for (INT i = 0; i < nCount; ++i)
+ {
+ HWND hwnd = FindWindowW(L"Notepad", NULL);
+ if (!hwnd)
+ {
+ if (!bRetry)
+ break;
+ Sleep(INTERVAL);
+ continue;
+ }
+ bFound = TRUE;
+ HWND hwndPopup = GetLastActivePopup(hwnd);
+ if (hwndPopup && hwnd != hwndPopup)
+ {
+ PostMessageW(hwndPopup, WM_COMMAND, IDCANCEL, 0);
+ PostMessageW(hwndPopup, WM_COMMAND, IDNO, 0);
+ PostMessageW(hwndPopup, WM_CLOSE, 0, 0);
+ }
+ PostMessageW(hwnd, WM_CLOSE, 0, 0);
+ Sleep(INTERVAL);
+ }
+ return bFound;
+#undef INTERVAL
+}
+
static void DoEntry(const TEST_ENTRY *pEntry)
{
HRESULT hr;
@@ -435,28 +464,11 @@ static void DoEntry(const TEST_ENTRY *pEntry)
ok(hr == pEntry->hr, "Line %d: hr expected 0x%lX, was 0x%lX\n",
pEntry->lineno, pEntry->hr, hr);
-#define RETRY_COUNT 5
-#define RETRY_INTERVAL 250
if (SUCCEEDED(hr) && pEntry->pwszWindowClass)
{
- BOOL bFound = FALSE;
- Sleep(RETRY_INTERVAL / 2);
- for (int i = 0; i < RETRY_COUNT; ++i)
- {
- HWND hwnd = FindWindowW(pEntry->pwszWindowClass, NULL);
- if (hwnd)
- {
- bFound = TRUE;
- SendMessage(hwnd, WM_CLOSE, 0, 0);
- Sleep(RETRY_INTERVAL);
- break;
- }
- Sleep(RETRY_INTERVAL);
- }
+ BOOL bFound = CloseNotepads(TRUE);
ok(bFound, "Line %d: The window not found\n", pEntry->lineno);
}
-#undef RETRY_COUNT
-#undef RETRY_INTERVAL
}
START_TEST(ShellExecCmdLine)
@@ -480,6 +492,8 @@ START_TEST(ShellExecCmdLine)
}
}
+ CloseNotepads(FALSE);
+
// s_testfile1
FILE *fp = fopen(s_testfile1, "wb");
ok(fp != NULL, "failed to create a test file\n");
@@ -620,4 +634,5 @@ START_TEST(ShellExecCmdLine)
// clean up
ok(DeleteFileA(s_testfile1), "failed to delete the test file\n");
ok(DeleteFileA(s_testfile2), "failed to delete the test file\n");
+ CloseNotepads(FALSE);
}