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 Long
CommandString = "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 Long
Dim RetString As String * 256
Dim CommandString As String
CommandString = "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&