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)
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 bien valable pour tous les OS ? et pour Access 2000, 2002 et
2003?