1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
Public Function ShellEx(ByVal sFile As String, _
Optional ByVal eShowCmd As EShellShowConstants = zouSW_SHOWDEFAULT, _
Optional ByVal sParameters As String = "", _
Optional ByVal sDefaultDir As String = "", _
Optional sOperation As String = "open", _
Optional Owner As Long = 0 _
) As Boolean
Dim lR As Long
Dim lErr As Long, sErr As String
If (InStr(UCase$(sFile), ".EXE") <> 0) Then
eShowCmd = 0
End If
On Error Resume Next
If (sParameters = "") And (sDefaultDir = "") Then
lR = ShellExecuteForExplore(Owner, sOperation, sFile, 0, 0, zouSW_SHOWNORMAL)
Else
lR = ShellExecute(Owner, sOperation, sFile, sParameters, sDefaultDir, eShowCmd)
End If
'MsgBox lR
If (lR < 0) Or (lR > 32) Then
ShellEx = True
Else
lErr = vbObjectError + 1048 + lR
Select Case lR
Case 0
lErr = 7: sErr = "Dépassement de mémoire"
Case ERROR_FILE_NOT_FOUND
lErr = 53: sErr = "Fichier non trouvé"
Case ERROR_PATH_NOT_FOUND
lErr = 76: sErr = "Chemin inconnu"
Case ERROR_BAD_FORMAT
sErr = "L'exécutable n'est pas valide ou est corrompu"
Case SE_ERR_ACCESSDENIED
lErr = 75: sErr = "Erreur/ accès au répertoire ou au fichier"
Case SE_ERR_ASSOCINCOMPLETE
sErr = "Ce type de fichier est sans association valable"
Case SE_ERR_DDEBUSY
lErr = 285: sErr = "Le fichier n'a pu être ouvert car en cours d'utilisation. Recommencez plus tard SVP."
Case SE_ERR_DDEFAIL
lErr = 285: sErr = "Le fichier n'a pu être ouvert car la transaction DDE a failli. Recommencez plus tard SVP."
Case SE_ERR_DDETIMEOUT
lErr = 286: sErr = "Le fichier n'a pu être ouvert (délai max dépassé). Recommencez plus tard SVP."
Case SE_ERR_DLLNOTFOUND
lErr = 48: sErr = "Impossible de trouver la DLL spécifiée."
Case SE_ERR_FNF
lErr = 53: sErr = "Fichier non trouvé"
Case SE_ERR_NOASSOC
sErr = "Aucune association définie pour ce type de fichier"
Case SE_ERR_OOM
lErr = 7: sErr = "Mémoire épuisée"
Case SE_ERR_PNF
lErr = 76: sErr = "Chemin inconnu"
Case SE_ERR_SHARE
lErr = 75: sErr = "Violation de partage !."
Case Else
sErr = "Une erreur a surgi au moment d'essayer d'ouvrir ou d'éditer le fichier choisi."
End Select
MsgBox "Error n°" & CStr(lErr) & Chr(13) & sErr & " sur ouverture : " & Chr(13) & sFile, vbCritical
ShellEx = False
End If
End Function |
Partager