IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Choix entre 2 versions Acrobat.exe et acroRd32.exe [Débutant]


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut Choix entre 2 versions Acrobat.exe et acroRd32.exe
    Bonjour le forum,

    Actuellement j'ai un code qui permet d'ouvrir un PDF à la page souhaité, mais je dois faire un choix entre la version 32bits ou 64bits d'ADOBE READER.

    Ce code est destiné à être utiliser sur diffèrent PC et bien sûr personne n'a la même version d'ABOBE READER.

    Peut-on faire un code qui permet de prendre la bonne version de chaque PC "32 ou 64 bits", en gros si Acrobat.exe existe alors ou si acroRd32.exe existe alors.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     myProcess.StartInfo.FileName = "Acrobat.exe"
                   ' myProcess.StartInfo.FileName = "acroRd32.exe"
                    myProcess.StartInfo.Arguments = "/A ""page=62=OpenActions"" /n ""C:\mon PDF"""
                    myProcess.Start()
    Merci pour votre aide,

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,
    Ne suffit-il pas de vérifier la présence du fichier ?
    ...

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Bonjour Phil Rob,

    Merci pour l'idée, en gros cela donnerait ce code, que je n'ai pas encore tester.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If System.IO.File.Exists("C:\\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe") then
     myProcess.StartInfo.FileName = "Acrobat.exe"                
     myProcess.StartInfo.Arguments = "/A ""page=59=OpenActions"" /n ""C:\mon.pdf"""
     myProcess.Start()
     
    elseif System.IO.File.Exists("C:\\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe") Then
    myProcess.StartInfo.FileName = "AcroRd32.exe"     
    myProcess.StartInfo.Arguments = "/A ""page=59=OpenActions"" /n ""C:\mon.pdf"""
    myProcess.Start()
     
    End if
    Cela pose juste le problème d'une installe qui n'est pas dans le dossier de destination habituel

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Oui, sans les doubles slashes (), c'est bien ce à quoi je pensais.
    Il doit être possible de trouver le dossier du reader en cherchant dans les outils "système", j'ai pas la solution sous la main...
    Mais en parlant "système", me vient une autre idée : il "suffit" d'utiliser le lecteur pdf par défaut, dans ce cas un Process.Start devrait fonctionner sans se préoccuper du dossier. A vérifier...

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Je viens de tester le code, il fonctionne "avec les doubles slashes", avec Process.Start cela fonctionne mais je n'arrive pas à sélectionner une page "ouverture simple du fichier PDF", et utiliser l'outils "système" cela serait la meilleur solution je pense, à creuser.

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Puisque tu l'as sous la main, peux tu me dire, ça ne marche pas sans doubler les slashes ?

    Pour trouver l'endroit de stockage du lecteur pdf, bonne chance, ça doit être possible....

  7. #7
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Avec ou sans les doubles slashes cela fonctionne pareil,

    Cette page permet de faire appel à beaucoup de processus mais pas de PDF...
    https://docs.microsoft.com/fr-fr/win...h-settings-app

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Citation Envoyé par Tempus01 Voir le message
    Avec ou sans les doubles slashes cela fonctionne pareil
    c'est trop cool ! Va falloir que je creuse.
    Mais plus sérieusement ..., c'est pas normal.

    Je cherchais un peu côté Registry et voici ce que je trouve.

    Chez moi le reader par défaut est FoxitReader. Une recherche de FoxitPDFReader.exe dans la registry me donne son emplacement dans :
    Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader\DefaultIcon

    J'ai aussi l'AcrobatReader installé. Une recherche de Acrobat.exe dans la registry me donne son emplacement dans :
    Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Acrobat\DefaultIcon
    Une recherche de AcroRD32.exe n'est pas trouvé dans la Registry. Or ce programme est stocké dans le même dossier que Acrobat.exe. J'en déduis que sur un ordi 64 bits, AcroRD32.exe n'est pas installé et donc, n'est pas repris dans la registry

    Cela signifie que la recherche à faire est de savoir si le système est 32 ou 64 bits. Si 32, alors il faut chercher AcroRD32.exe et la registry donnera (à vérifier) le chemin du dossier dans Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AcroRD32\DefaultIcon, sinon, si 64 bits, alors il faut chercher Acrobat.exe et la registry donne le chemin du dossier dans Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Acrobat\DefaultIcon.

    Si besoin, je dois avoir quelque part les codes pour rechercher une valeur dans la registry.

    ...

    Nom : pdf1.jpg
Affichages : 237
Taille : 80,5 Ko

  9. #9
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Cela pourrait être une piste de rechercher si le system est 32 ou 64 bits, suivant la réponse on lance tel ou tel exécutable "AcroRD32.exe ou Acrobat.exe", plus besoin du chemin.

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    En supposant que AcroRD32 n'est opas installé si pas nécessaire, alors le code suivant permet de lancer AcroRD32 ou Acrobat selon la configuration.
    Ceci devrait fonctionner aussi si l'installation du Reader n'est pas celle par défaut, par exemple s'il est installé sur un disque E:.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
        Public Sub LanceLecteurPDF()
            Dim Clave As Microsoft.Win32.RegistryKey
            Dim SubClave As Microsoft.Win32.RegistryKey
            Dim Programme As String
            Clave = My.Computer.Registry.LocalMachine
            Try
                SubClave = Clave.OpenSubKey("SOFTWARE\Classes\AcroRD32\DefaultIcon")
                Programme = SubClave.GetValue("")
                Process.Start(Programme)
            Catch
                Try
                    SubClave = Clave.OpenSubKey("SOFTWARE\Classes\Acrobat\DefaultIcon")
                    Programme = SubClave.GetValue("")
                    Process.Start(Programme)   ' Ajouter les paramètres du fichier pdf à ouvrir
                Catch
     
                End Try
            End Try
        End Sub
    J'espère que ceci te fera avancer dans ton projet ...

  11. #11
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Super merci pour le code, je vais tester de ce pas.

    Petite question avant de me lancer, actuellement je sélectionne la page et communique le chemin avec ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         myProcess.StartInfo.Arguments =  "/A ""page=59=OpenActions"" /n ""C:\mon.pdf"""
    j'insère les informations comme ceci dans votre code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Programme = SubClave.GetValue( "/A ""page=59=OpenActions"" /n ""C:\mon.pdf""")

  12. #12
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Le code me donne cette erreur.
    Nom : erreur VB.net.JPG
Affichages : 220
Taille : 40,2 Ko

  13. #13
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Voici mon code intrégrant le paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Public Sub LanceLecteurPDF()
            Dim Clave As Microsoft.Win32.RegistryKey
            Dim SubClave As Microsoft.Win32.RegistryKey
            Dim Programme As String
            Dim MonArgument As String = "/A ""page=15=OpenActions"" /n ""D:\Tmp\ProcessTest\ManualPracticoSQL.pdf"""  ' ça, c'est mon test :D)))
            Clave = My.Computer.Registry.LocalMachine
            Try
                SubClave = Clave.OpenSubKey("SOFTWARE\Classes\AcroRD32\DefaultIcon")
                Programme = SubClave.GetValue("")
                Process.Start(Programme, MonArgument)
            Catch
                Try
                    SubClave = Clave.OpenSubKey("SOFTWARE\Classes\Acrobat\DefaultIcon")
                    Programme = SubClave.GetValue("")
                    Process.Start(Programme, MonArgument)   ' Ajouter les paramètres du fichier pdf à ouvrir
                Catch
     
                End Try
            End Try
        End Sub
    ...

  14. #14
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Merci pour l'exemple,
    en insèrent votre code j'ai une ligne en rouge, si je mets Cstr devant cette ligne cela règle le problème temporairement car après lorsque je lance le test cela donne l'erreur que je vous ai communiquer dans le message d'avant.

  15. #15
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Le problème est ailleurs, CStr ne doit rien faire là.

    Peut-être devrais-tu poster ta page de code complète avec l'écriture du paramètre et le Process.Start.

    En attendant, vois cette vidéo que je viens d'enregistrer : https://www.dropbox.com/s/iea49mkqk70q3my/PDF.mp4?dl=0

    Ci-joint le projet test complet de la video, pour que tu puisses tester comme moi : ProcessTest.zip
    Pour tes tests, n'oublie pas de modifier le chemin du fichier PDF à lire, il sera forcément différent sur ton PC.

    Je n'aurai plus de temps aujourd'hui mais bien demain.

    Bonne soirée,


  16. #16
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    ok, merci

  17. #17
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Je fais quelques tests ce matin à propos de l'ouverture d'un PDF à une page donnée car je ne m'étais jamais intéressé à ce travail.

    Je crois que la chaine qui exprime l'argument d'appel d'Acrobat peut être plus simple, avec moins de guillemets (ce sont des sources d'erreurs, quand on commence, un de plus ou un de :moins et c'est l'erreur).

    En fait, la chaine suivante est suffisante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MonArgument As String = "/A page=15 D:\Tmp\ProcessTest\ManualPracticoSQL.pdf"
    Et pour distinguer les parties variables (n° de page et nom du fichier à lire), j'en arrive à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Public Sub LanceLecteurPDF()
     
            Dim Clave As Microsoft.Win32.RegistryKey
            Dim SubClave As Microsoft.Win32.RegistryKey
     
            Dim Programme As String
            Dim NomEtCheminFichierALire As String = "D:\Tmp\ProcessTest\ManualPracticoSQL.pdf"   ' par exemple
            Dim PageALire As Integer = 15   ' par exemple
            Dim MonArgument As String = "/A page=" & PageALire.ToString & " " & NomEtCheminFichierALire
     
            Clave = My.Computer.Registry.LocalMachine
     
    ' ... ... ...  la suite de mes codes d'hier ...
    Bonne journée,


  18. #18
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Bonjour,


    Effectivement, il n'est pas obligatoire de mettre autant de guillemet, ils servent seulement si il y a des espaces non notifier.

    Votre code est très intéressent placer les différentes parties dans des variables, je n'y avait pas penser, mais comme j'ai différentes pages sur différents PDF à ouvrir je dois réfléchir à comment intégrer votre méthode dans mon code.

    Sinon en testent votre exemple j'ai compris d'où venait le problème, je code en Option strict sur ON, en off pas de surlignage en rouge, il faut que je trouve comment le faire fonctionner en OPTION STRICT sur ON.

  19. #19
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir,

    J'ai bien pensé à cette question des guillemets pour encadrer des chaines contenant des blancs, mais j'ai fait cet essai, avec espaces dans un nom de dossier et dans le nom du fichier à lire, et ça fonctionnait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim NomEtCheminFichierALire As String = "D:\Tmp\ProcessTest\Dossier Test\Manual Practico SQL.pdf"
    Mais note qu'une fois ta syntaxe bien réglée, les guillemets ne gênent plus.

    Pour ce qui est des Option de compilation, ça se règle dans les propriétés du projet (menu Projet/Propriétés), sous l'onglet "Compiler".
    Voici ma configuration (c'est la config par défaut). Je crains que ton problème soit ailleurs ..., tu peux toujours envoyer ton projet ...

    Nom : Explicit.jpg
Affichages : 218
Taille : 107,7 Ko

  20. #20
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Je crois aussi que le problème est ailleurs, reste plus qu'à chercher. je ferais un retour.

    Merci encore pour ces précieux conseils.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Choix entre Excel (VBA) et 1 appli exe (Qt)
    Par gui80 dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 16/03/2011, 11h03
  2. choix entre dbexpress et objet interbase
    Par hani dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/11/2004, 23h09
  3. Conseille Choix entre MySQL et InterBase?
    Par Redhouane dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/09/2004, 11h42
  4. Réponses: 7
    Dernier message: 04/03/2004, 13h32
  5. choix entre macro et fonction
    Par remi77 dans le forum C
    Réponses: 4
    Dernier message: 22/10/2003, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo