🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: borland.public.cppbuilder.nativeapi
1 messages
1 total messages Started by const * const char ME Thu, 21 Feb 2008 16:47
Opening HTML doc using Shell Execute with IE7 fails on Vista is some cases!
#674
Author: const * const char ME
Date: Thu, 21 Feb 2008 16:47
41 lines
2378 bytes
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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads