OVH Cloud OVH Cloud

Recherche de fichier EXE associé

1 réponse
Avatar
Bruno Frisque
Bonjour le groupe,

Il s'agit ici de retrouver, par code, le Viewer associé à un type d'image.
voici le code complet :
'---------------------------------------------------------------
Option Compare Database
Option Explicit
Public ViewerPath

'APIs: Trouver le fichier EXE associé à un document
' find the default viewer of the image 16/02/06 (Lebans Stephen site)

'*********** Code Start ************
Const cMAX_PATH = 260
Const ERROR_NOASSOC = 31
Const ERROR_FILE_NOT_FOUND = 2&
Const ERROR_PATH_NOT_FOUND = 3&
Const ERROR_BAD_FORMAT = 11&
Const ERROR_OUT_OF_MEM = 0

Private Declare Function apiFindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" _
(ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String) _
As Long

Function fFindEXE(stFile As String, _
stDir As String) _
As String
'Usage Example:
' ?fFindEXE("test.xls","c:\temp")
'ou bien, at form level : call fFindExe("I73D50.TIF","C:\Data")

Dim lpResult As String
Dim lngRet As Long
Dim pos
lpResult = Space(cMAX_PATH)
lngRet = apiFindExecutable(stFile, stDir, lpResult)

If lngRet > 32 Then
pos = InStr(1, lpResult, Chr(0), vbBinaryCompare) - 1 '< correction
by 3stone
fFindEXE = Left(lpResult, pos) ''< correction by 3stone
ViewerPath = Left(lpResult, pos)
Else
Select Case lngRet:
Case ERROR_NOASSOC: fFindEXE = "Error: No Association"
Case ERROR_FILE_NOT_FOUND: fFindEXE = "Error: File Not Found"
Case ERROR_PATH_NOT_FOUND: fFindEXE = "Error: Path Not Found"
Case ERROR_BAD_FORMAT: fFindEXE = "Error: Bad File Format"
Case ERROR_OUT_OF_MEM: fFindEXE = "Error: Out of Memory"
End Select
End If
Debug.Print "viewer's name at MODULE:" & ViewerPath & "."
'---------------------------------------------------------------------------
----
Ce code marche parfaitement sur mon PC (XP Pro SP1) et sous A2K
Dès que l'on place le programme.MDB sur un autre PC, cela ne va plus du
tout...
Stations Win XP Home, Win XP Pro et Millenium ....
sur ces stations : le code Debug.Print "viewer's name at MODULE:" &
ViewerPath & "."
donne :viewer's name at MODULE . et c'est tout.

Ce code est-il valable pour tous les OS ??
D'avance grand merci

1 réponse

Avatar
3stone
Salut,

"Bruno Frisque"
| Il s'agit ici de retrouver, par code, le Viewer associé à un type d'image.
| voici le code complet :
| '---------------------------------------------------------------
<snip>


Si le nom de la fonction ne te convient pas, change le !!!
en ViewerPath si le coeur t'en dis et si tu préfère ;-)

Cela t'évitera la déclaration de variable et une fonction
qui renvoit... inutilement la valeur du path !


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/