Article View: borland.public.cppbuilder.nativeapi
Article #574Re: ShellExecute does not work - open HTML file with spaces in the file path.
From: Ed Mulroy [TeamB]
Date: Thu, 28 Feb 2008 17:16
Date: Thu, 28 Feb 2008 17:16
57 lines
3208 bytes
3208 bytes
The trailing space in the file name cannot be good. At best it will be
ignored. Get rid of it.
This is just a guess but I suspect that if IE is already running that the
command line is passed on to the in-memory module while if it is not already
running then the command line is passed to the command interpreter. The
command interpreter requires paths and/or file names containing spaces to be
encased in quotes.
Try changing
aPath = "D:\Example Projects\test.html ";
to
aPath = "\"D:\Example Projects\test.html\"";
. Ed
> const * const char ME wrote in message
> news:47c6dfd8$1@newsgroups.borland.com...
>
>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. Again - only on Vista!
>
> 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....
Technical Details
Message-ID:
<47c6ec57$1@newsgroups.borland.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!proxad.net!feeder1-2.proxad.net!feeder.erje.net!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mailReferences:
<47c6dfd8$1@newsgroups.borland.com>Show Full Headers
Complete Article Headers
X-Google-Thread: 10cc67,2980291559cdba2a X-Google-Attributes: gid10cc67,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit From: "Ed Mulroy [TeamB]" <dont_email_me@bitbuc.ket> Newsgroups: borland.public.cppbuilder.nativeapi References: <47c6dfd8$1@newsgroups.borland.com> Subject: Re: ShellExecute does not work - open HTML file with spaces in the file path. Date: Thu, 28 Feb 2008 12:16:04 -0500 Lines: 59 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.3138 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 X-RFC2646: Format=Flowed; Response NNTP-Posting-Host: 71.77.48.179 Message-ID: <47c6ec57$1@newsgroups.borland.com> X-Trace: newsgroups.borland.com 1204218967 71.77.48.179 (28 Feb 2008 09:16:07 -0700) X-Authenticated-User: edmulroy Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!proxad.net!feeder1-2.proxad.net!feeder.erje.net!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail