Opening HTML doc using Shell Execute with IE7 fails on Vista is some cases!


2008-02-22 12:47:14 AM
cppbuilder69
I have code like this:
ShellExecute(NULL, "open", aPath, NULL, NULL, SW_SHOWMAXIMIZED);
where aPath = "D:\Example Projects\test.html "
Note the space in the path above. When executed in Vista (default browser =
IE7) IE automatically changes this to:
"D:\Example%20Projects\test.html " and produces a "Navigation to the webpage
was cancelled" error for some reason.
Interestingly to me, on XP, (also with IE7) it does NOT have this problem.
I suspect it has something to do with a local file based URL and protected
mode in IE?
Anyway - So I tried this (figuring it would remove the spaces):
char shortPath[MAX_PATH] = {'\0'};
GetShortPathName(aPath.c_str(), shortPath, MAX_PATH);
ShellExecute(NULL, "open", shortPath, NULL, NULL, SW_SHOWMAXIMIZED);
However before displaying it, IE expands the short path to the full path,
then does the exact same thing - replacing the space with %20 - which again
fails in the same way.
Lastly - I noticed something very odd... The problem seems to be related to
if the browser is already running!
To reproduce:
1. Close all the IE windows
2. Execute the above code. It works as it should - with no %20's - they
are left alone as spaces.
3. Without closing IE, immediately execute the same code again, it has %20
characters parsed into the address and fails!
Thus - if you have an IE window opened before executing the above code with
a path that has spaces then it fails - otherwise it works....
Any ideas???
TIA