● 長いファイル名を短いファイル名に変換する ●

MciSendString 関数で MIDI ファイルを再生する場合、ファイル名にスペースがあると再生してくれない。この現象は短いファイル名にすることで回避でくる。ということで長いファイル名を短いファイル名に変換してみましょう。

Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

'-------------------------------------------------------------------
' 関数名 : CnvLongToShort
' 機能   : 長いファイル名を短いファイル名に変換する
' 引数   : (in) LongName … 長いファイル名
' 返り値 : 変換された短いファイル名
'-------------------------------------------------------------------
Public Function CnvLongToShort(ByVal LongName As String) As String

    Dim TempBuff As String * 256

    Call GetShortPathName(LongName, TempBuff, Len(TempBuff))

    CnvLongToShort = Left$(TempBuff, InStr(TempBuff, Chr$(0)) - 1)
  
End Function

Windows XP(SP2) または Windows 2003 Server 以降の OS であれば、PathGetShortPath というAPI関数も利用できる。
それについてはShell32.dllに生息する妙なAPI関数達を参照。


戻る