Questions about filename_tests in dlls/shell32/tests/shlexec.c
Francois Gouget
fgouget at free.fr
Sun Feb 16 06:31:24 CST 2014
On Sun, 16 Feb 2014, Zhenbo Li wrote:
[...]
> However, I can't understand the intention of previous code: All
> testcases are put into
> 'static filename_tests_t filename_tests[]',
> then they are tested via a while-loop. I think it is difficult to locate
> *which* testcase really fails.
>
> Is re-factoring such code encouraged? If so, I'm glad to do it.
No. The goal of this test structure is to avoid lots of code
duplication. To compensate with the line number being of little use, the
failure message prints the full data on what was tested. For instance
the first failure is:
shlexec.c:139: Test failed: ShellExecute(verb="", file="C:\Users\winetest\AppData\Local\Temp\wtD671.tmp\test file.noassoc") WaitForSingleObject returned 258
The verb is empty and the base filename 'test file.noassoc' so this
corresponds to:
/* Test filenames with no association */
{NULL, "%s\\test file.noassoc", 0x0, SE_ERR_NOASSOC},
It turns out I looked into this a bit and in fact all the 'returned 258'
errors have the same cause: Windows 8 pops up a 'dialog' that asks
whether to look for an app in the Microsoft Store to handle the unknown
file extension.
shell_execute() has some code to deal with those which centers on:
HWND wnd = FindWindowA("#32770", "Windows");
That line is supposed to detect the dialog popped up by Windows, dismiss
it and note to skip further tests that could trigger it.
The problem is that on Windows 8 the 'dialog' has changed: it's a window
with no decoration that looks very much like the Metro apps. So it's too
different and thus is not detected.
I tried to figure out what class or title that window has using Spy++
but any time I click outside it, it disappears.
That's where I got stuck. So if anyone wants to take over...
--
Francois Gouget <fgouget at free.fr> http://fgouget.free.fr/
There are 10 types of people in the world...
those who understand binary and those who don't.
More information about the wine-devel
mailing list