Vérifier l'installation d'acrobat

Signaler
Messages postés
12
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
17 octobre 2006
-
Messages postés
2
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
26 août 2006
-
Bonjour à tous,


Dans mon programme en VB6, j'offre la possibilité à l'utilisateur de
visualiser un fichier au format PDF. Pour cela, j'utilise le composant
Adobe dans VB6. L'inconvénient, c'est que je dois tester si
l'utilisateur a acrobat reader d'installé sur sa machine. Auriez-vous
des pistes pour programmer cela?


Je suis preneur de toute aide.


Merci bcp et bon week-end.

3 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Comment fais-tu pour afficher ton pdf ? si tu utilise le composant, tu dois surrement l'afficher directement dans ton programme.

Moi perso, je préfère lance AcrobatReader en application externe à l'aide d'une commande shell.

Tout d'abord j'utilise l'api FindExecutable pour récupérer le chemin de l'application qui ouvre le format pdf (ce n'est pas forcément acrobat reader, il existe d'autres logiciels).
Si le chemin retourné est vide, il n'y a pas d'application d'installer, sinon je la nce une commande shell :

Shell ("chemin_executable chemin_fichier").

Sevyc64  (alias Casy)<hr align="center" size="2" width="100%" /><stron></stron># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Et comme je suis sympa aujourd'hui, je te donne même mon code :

Public 
Declare 
Function CloseHandle Lib "kernel32" 
ByVal hObject 
As 
Long) 
As 
Long 

Public 
Declare 
Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" 
ByVal lpFile 
As 
String, _ 
                                                                                  
ByVal lpDirectory 
As 
String, _ 
                                                                                  
ByVal lpResult 
As 
String) 
As 
Long 

Public 
Declare 
Function OpenProcess Lib "kernel32" 
ByVal dwDesiredAccess 
As 
Long, _ 
                                                    
ByVal bInheritHandle 
As 
Long, _ 
                                                    
ByVal dwProcessId 
As 
Long) 
As 
Long 

Public 
Declare 
Function WaitForSingleObject Lib "kernel32" 
ByVal hHandle 
As 
Long, _ 
                                                            
ByVal dwMilliseconds 
As 
Long) 
As 
Long 

Public 
Const INFINITE =  &HFFFFFFFF      
 '  Infinite timeout

Public 
Const SYNCHRONIZE = &H100000 

'---------------------------------------------------------------------------------------

' Procedure : OuvrirPdf

' DateTime  : 05/08/2006 14:08

' Author    : Casy

' Purpose   : Permet d'ouvrir un document PDF avec l'applicatif par défaut.

'             Vérifie d'abord si le fichier existe, si un applicatif est installé

'             Possibilité de bloquer le process tant que l'applicatif n'est pas fermé

'             Retourne TRUE si l'ouverture s'est bien passée, FALSE sinon.

'---------------------------------------------------------------------------------------

Public 
Function OuvrirPdf(fichier 
As 
String, attenteFermeture 
As 
Boolean) 
As 
Boolean 

Dim fileappli 
As 
String * 250 

Dim result 
As 
Integer 

Dim temp 
As 
String 

Dim fichAOuvrir 
As 
String 


temp = Dir$(fichier) 
 'recherche si le fichier existe

If temp <> "" 
Then 

    ' Le fichier existe

    ' Recherche Acrobat Reader ou autre

    result = FindExecutable(fichier, "c:", fileappli) 
    
If result > 32 
Then 

         ' Acrobat reader installé

        i = 
InStr (1, fileappli, 
Chr(0), vbBinaryCompare) - 1 
        fichAOuvrir  = """" & Left$(fileappli, i) & """ " & fichier 
    
Else 

        ' Acrobat Reader pas installé

        OuvrirPdf =  
False 
        
Exit 
Function 
    
End 
If 

Else 

    ' Le fichier n'existe pas

    OuvrirPdf = 
False 
    
Exit 
Function 

End 
If 

' Ouverture du fichier PDF

pid = 
Shell (fichAOuvrir, vbMaximizedFocus) 

If pid <> 0 
Then 

    ' Si attente fermeture demandé, on suspend le process jusqu'à que Acrobat soit fermé.

    
If attenteFermeture  = 
True 
Then 
        phnd =  OpenProcess(SYNCHRONIZE, 0, pid) 
        
If phnd <> 0 
Then 
            
Call WaitForSingleObject(phnd, INFINITE) 
            
Call CloseHandle(phnd) 
        
End 
If 
    
End 
If 


    OuvrirPdf = 
True 

Else 
    OuvrirPdf = 
False 

End 
If 

End 
Function

Sevyc64  (alias Casy) <hr align ="center" size="2" width="100%" /><stron></stron># LE PARTAGE EST NOTRE FORCE #
Messages postés
2
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
26 août 2006

Merci beaucoup Casy pour ce code qui fonctionne génialement bien pour ouvrir TRES rapidement un fichier .pdf.

Olivier