Problem launching Firefox from Windows with file path that contains space characters in the html file's file name
We have a software application that programmatically launches the default web browser using the Windows shell execute function ("ShellExecuteA" in the "shell32.dll" library of the Windows API) along with a file path for a saved local html file that is to be displayed. In the case that FireFox is the default browser and the file path for the html file contains any space characters in the html file's file name, Firefox (in this case v7.01) will display an error message "File not Found..." and then will also proceed to open tabs for each of the individual words in the file name, launching as the URL path, each individual word appended to ".com".
In the following example, the path "C:\KSSecOfState\Forms\Kansas Secretary of State - Filings and Forms.htm" when launched programmatically, resulted in the error message "File not Found...Firefox can't find the file at /C:/KSSecOfState/Forms/Kansas." and opened up browser windows for "http://www.secretary.com/", "http://www.of.com/", "http://www.state.com/", "http://www.and.com/", and attempted to launch "http://forms.htm". If the same file (renamed) is launched using the path string "C:\KSSecOfState\Forms\KansasSecretaryOfState-FilingsAndForms.htm" the file opens up correctly in Firefox. Clearly the presence of spaces in the file name is causing the problem.
I should also note that either path (with or without space characters) works properly if pasted directly into the Firefox URL path menu bar for a live instance of Firefox. The test path strings I used were:
C:\KSSecOfState\Forms\KansasSecretaryOfState-FilingsAndForms.htm C:\KSSecOfState\Forms\Kansas Secretary of State - Filings and Forms.htm
Does anyone know anything about this problem or how to work around it (other than the obvious answer of taking the spaces out of the file name which is not possible for this application). It seems the problem is specific to Firefox. IE works properly if launched programmatically with spaces in the file name passed to it. I haven't tested other browsers yet.
Thanks!
Все ответы (2)
If starting from ShellExecute works the same as starting from the command line then there are two options:
Put everything inside double quotes
C:\Program Files\Mozilla Firefox\>firefox.exe "c:\test\svg test.htm"
Convert to a valid url with file:// protocol and percentage-escaping the space
C:\Program Files\Mozilla Firefox\>firefox.exe file://c:\test\svg%20test.htm
That should be three: file:///c:/test/svg%20test.htm