Para hacer sonar archivos Midi o wave a través del API, arrancar y parar.

Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Puedes incluir las siguientes líneas en cualquier parte del código, declarando la variable de respuesta.
Para hacer que suene:

iResult = mciExecute("Play " & App.Path & "archivo.mid")
Para hacer que pare:

iResult = mciExecute("Stop " & App.Path & "archivo.mid")
Bueno pues así reproduciría un archivo midi o wav que esté en el mismo directorio que el del proyecto. Si además se combina con la función de presentar una ruta larga de archivo en corta, entonces queda asegurada su funcionalidad en cualquier directorio. Si no, no sonará si el archivo a reproducir se encuentra en un directorio largo.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------


Convertir nombre de ruta larga a corta

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

'-----------------------------------------------------------
' Función: GetShortPathName
'
' Recupera el nombre de ruta corto de una ruta que contiene nombres de archivos o subdirectorios en formato largo
'-----------------------------------------------------------
'
Function GetShortPathName(ByVal strLongPath As String) As String
    Const cchBuffer = 300
    Dim strShortPath As String
    Dim lResult As Long

    On Error GoTo 0
    strShortPath = String(cchBuffer, Chr$(0))
    lResult = OSGetShortPathName(strLongPath, strShortPath, cchBuffer)
    If lResult = 0 Then
        Error 53 ' Archivo no encontrado
    Else
        GetShortPathName = StripTerminator(strShortPath)
    End If
End Function

'-----------------------------------------------------------
' Función: StripTerminator
'
' Devuelve una cadena sin un terminador en cero. Es la forma típica
' en la que la API de Windows API devuelve una cadena.
'
' Entrada: [strString] - Cadena de la que eliminar el terminador
'
' Devuelve: El valor de la cadena que se pasa menos cualquier
'           cadena terminada en cero.
'-----------------------------------------------------------
'
Function StripTerminator(ByVal strString As String) As String
    Dim intZeroPos As Integer

    intZeroPos = InStr(strString, Chr$(0))
    If intZeroPos > 0 Then
        StripTerminator = Left$(strString, intZeroPos - 1)
    Else
        StripTerminator = strString
    End If
End Function

Página interesante:
http://www.e-mision.net/crazyhouse/secciones/ultvisitados.asp

    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)