I had an application that needed to call an external exe and supply it with an input and output filename. The problem I had was that if the filename had a space in it, the executable would give me an error. I tried putting double quotes around the entire call, double quotes around the filenames, single quotes. But nothing would work. I didn't have access to the code of the executable.
What I ended up doing was to use the Short Filename. Below is code that helped me do it. I found it on some message board, but didn't save the reference.
Private Const MAX_PATH As Integer = 260
Private Declare Auto Function GetShortPathName Lib "kernel32" ( _
ByVal lpszLongPath As String, _
ByVal lpszShortPath As System.Text.StringBuilder, _
ByVal cchBuffer As Integer) As Integer
Public Function GetShortFileName(ByVal LongPath As String) As String
Dim ShortPath As New System.Text.StringBuilder(MAX_PATH)
Dim BufferSize As Integer = GetShortPathName(LongPath, ShortPath, ShortPath.Capacity)
Tjust call GetShortFileName with the filename you want to change and it will return the Windows Short Filename.