🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.nativeapi
Article #574

Re: ShellExecute does not work - open HTML file with spaces in the file path.

#574
From: Ed Mulroy [TeamB]
Date: Thu, 28 Feb 2008 17:16
57 lines
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-mail
References: <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