Etudiant37000
XLDnaute Nouveau
J'essai actuellement de comprendre comment marche la fonction mciSendString qui apparemment permet de gérer du contenu multimédia.
Microsoft offre quelques infos sur la fonction; mais pour être sincère c'est assez obscure pour moi ....
J'ai découvert cette fonction sur ce post de développez.net :
au post #21
Dans mon fichier xcel en feuil2 j'ai mis une adresse de fichier .mp3 dans ma bécane; ça me balance sans arrêt les deux mêmes erreurs, soit la 261 soit la 263.
Visiblement le traitement réalisé par la fontion "GetShortPathName" renvoie un nom de fichier incorrect pour MCI (cf: sur la capture nommée "caractère spécial_pettit carré" on peut voir, dans la console "variables locale" en bas de la fenêtre, qu'après traitement, AudioFile comporte le nom du fichier avec, juste après ".mp3", un petit carré qui s'est ajouté ...)
D'ailleurs je me demande à quoi sert cette fonction GetShortPathName s'appuyant elle-même sur la fonction déclarée en privée "fGetShortPathName" ..?*
Et si je dégage le traitement avec fGetShortPathName et GetshortPathName en chargeant AudioFile de ActiveCell.txt,
ça annonce de nouveau Erreur 263...
Donc cette fonction j'y pige pas grand chose en définitive./
J'espère que tout ce blabla est à peu près clair ^^
Merci
NB : voici le code
"
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal _
hwndCallback As Long) As Long
Private Declare PtrSafe Function fGetShortPathName Lib "kernel32" Alias _
"GetShortPathNameA" (ByVal lpszLongPath As String, ByVal _
lpszShortPath As String, ByVal cchBuffer As Long) As Long
Function GetShortPathName(sLongPathName As String) As String
Dim lLen As Long
Dim sShortPathname As String
If Dir(sLongPathName, vbDirectory) = "" Then Exit Function
sShortPathname = Space$(260)
lLen = fGetShortPathName(sLongPathName, sShortPathname, 260)
'If (lLen = 0) Then Exit Function 'Not needed since DIR was used.
GetShortPathName = sShortPathname
End Function
Sub PlayMP3()
Dim AudioFile As String
Dim MciError As Long
AudioFile = ActiveCell.Text
MciError = mciSendString("play " & AudioFile, 0&, 0, 0)
If MciError <> 0 Then
MsgBox ("Erreur MCI : " & MciError & AudioFile)
End If
End Sub
Sub ArretMP3()
Dim AudioFile As String
Dim MciError As Long
AudioFile = ActiveCell.Text
MciError = mciSendString("close all", 0&, 0, 0)
If MciError <> 0 Then
MsgBox ("Erreur MCI : " & MciError & AudioFile)
End If
End Sub
Sub Sele(ByVal Target As Range)
If Target.Column = 1 Then
If Target <> "" Then
ArretMP3
PlayMP3
Else
ArretMP3
End If
End If
End Sub"
Microsoft offre quelques infos sur la fonction; mais pour être sincère c'est assez obscure pour moi ....
J'ai découvert cette fonction sur ce post de développez.net :
au post #21
|
Dans mon fichier xcel en feuil2 j'ai mis une adresse de fichier .mp3 dans ma bécane; ça me balance sans arrêt les deux mêmes erreurs, soit la 261 soit la 263.
Visiblement le traitement réalisé par la fontion "GetShortPathName" renvoie un nom de fichier incorrect pour MCI (cf: sur la capture nommée "caractère spécial_pettit carré" on peut voir, dans la console "variables locale" en bas de la fenêtre, qu'après traitement, AudioFile comporte le nom du fichier avec, juste après ".mp3", un petit carré qui s'est ajouté ...)
D'ailleurs je me demande à quoi sert cette fonction GetShortPathName s'appuyant elle-même sur la fonction déclarée en privée "fGetShortPathName" ..?*
Et si je dégage le traitement avec fGetShortPathName et GetshortPathName en chargeant AudioFile de ActiveCell.txt,
ça annonce de nouveau Erreur 263...
Donc cette fonction j'y pige pas grand chose en définitive./
J'espère que tout ce blabla est à peu près clair ^^
Merci
NB : voici le code
"
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal _
hwndCallback As Long) As Long
Private Declare PtrSafe Function fGetShortPathName Lib "kernel32" Alias _
"GetShortPathNameA" (ByVal lpszLongPath As String, ByVal _
lpszShortPath As String, ByVal cchBuffer As Long) As Long
Function GetShortPathName(sLongPathName As String) As String
Dim lLen As Long
Dim sShortPathname As String
If Dir(sLongPathName, vbDirectory) = "" Then Exit Function
sShortPathname = Space$(260)
lLen = fGetShortPathName(sLongPathName, sShortPathname, 260)
'If (lLen = 0) Then Exit Function 'Not needed since DIR was used.
GetShortPathName = sShortPathname
End Function
Sub PlayMP3()
Dim AudioFile As String
Dim MciError As Long
AudioFile = ActiveCell.Text
MciError = mciSendString("play " & AudioFile, 0&, 0, 0)
If MciError <> 0 Then
MsgBox ("Erreur MCI : " & MciError & AudioFile)
End If
End Sub
Sub ArretMP3()
Dim AudioFile As String
Dim MciError As Long
AudioFile = ActiveCell.Text
MciError = mciSendString("close all", 0&, 0, 0)
If MciError <> 0 Then
MsgBox ("Erreur MCI : " & MciError & AudioFile)
End If
End Sub
Sub Sele(ByVal Target As Range)
If Target.Column = 1 Then
If Target <> "" Then
ArretMP3
PlayMP3
Else
ArretMP3
End If
End If
End Sub"