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関数も利用できる。 |