Bonjour,
J'ai besoin, de maniére portable, de trouver l'executable associé à une extension de fichier.
Merci de votre aide
Bonjour,
J'ai besoin, de maniére portable, de trouver l'executable associé à une extension de fichier.
Merci de votre aide
C'est pour faire quoi ? http://doc.qt.digia.com/qt/qdesktopservices.html pourrait t'aider.
J'en ai besoin pour ouvrir un fichier pdf directement à la bonne page.
La syntax est la suivant "...\AcroRd32.exe /A page=49 my_pdf
J'ai donc besoin de connaitre le chemin de l'exe associer au pdf.
Dans ce cas tu n'as peut-être pas d'autre solution que d'utiliser les méthodes natives. Par exemple sous Windows, QDesktopServices::openUrl() utilise ShellExecute() en lui passant 0 comme lpParameters. C'est là que tu pourrais mettre tes paramètres. Donc de cette façon, tu n'as toujours pas à connaitre l'exécutable qui va se lancer...
Pour une implémentation multiplateforme, regarde dans les sources de Qt les qdesktopservices_<plateforme>.cpp pour voir comment ils font.
Oui mais malheureusement cela ne fonctionne pas non plus:
sous windows
"AcroRd32 /A page=50 my.pdf" fonctionne et ouvre le pdf page 50
alors que:
ouvre le pdf à la premiere page sans tenir compte du "/A page=50"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ShellExecute(NULL, "open", "my.pdf", "/A page=50", NULL, SW_SHOWNORMAL);
En même temps en lisant un peu la doc :
Mouais... Peut-être qu'il y a un moyen grâce au registre ou à ShellExecuteEx.If the lpFile member specifies a document file, lpParameters should be NULL.
Mais de toute façon, tes paramètres sont fortement liés à l'exécutable que tu penses utiliser. Donc dans ce cas :
fonctionne chez moi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ShellExecute(NULL, "open", "AcroRd32.exe", "/A page=50 my.pdf", NULL, NULL);
Oui, effectivement sous Windows ca marcherai dans la plupart des cas, si acrobate est effectivement le code majoritairement utilisé. Mais sous Linux ou mac il est difficile de connaitre ce code par défaut à l'avance.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager