You can retrieve the length of a standard windows media file (WAV, AVI or MIDI) using simple MCI functions. First, you must open the file with:
Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal _ lpstrCommand As String, ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, ByVal hwndCallback As Long) As LongCommandString = "Open " & FileName" & " alias MediaFile"mciSendString CommandString, vbNullString, 0, 0&
where MediaFile is an arbitrary name (an alias) that you then use in subsequent command strings. FileName is the full path of the media file and must be in the short format 8+3 characters. Now you can get file length in milliseconds:
Dim MediaLength as LongDim RetString As String * 256Dim CommandString As StringCommandString = "Set MediaFile time format milliseconds"mciSendString CommandString, vbNullString, 0, 0&CommandString = "Status MediaFile length"MciSendString CommandString, RetString, Len(RetString), 0&MediaLength = CLng(RetString)
Now, the MediaLength variable containes the length of the media file. You only have to close the MCI device, with
CommandString = "Close MediaFile"MciSendString CommandString, vbNullString, 0, 0&