Page 1 sur 1

[..] Ouverture fichier dans mon script

Posté : lun. 24 août 2015 18:06
par TiDi
Bonjour à tous,

Voilà, j'ai créé un petit script Autoit tout simple permettant de lancer des script Python dans l'invité de commande Windows (ça permet de pouvoir voir les éventuelles erreurs) automatiquement.

Au début, je pensais créer une interface, sélectionner le fichier .py que l'on veut ouvrir et l'ouvrir avec le cmd.exe mais bon, autant dire à Windows de lancer tout les fichiers .py avec mon programme et là deux questions :

- Comment peut-on automatiser la procédure permettant l'ouverture automatique d'une extension avec un programme ?
- Une fois que Windows a fait son boulot, comment ça se passe au niveau du programme ?
Oui parce que ça :

Code : Tout sélectionner

$sChemin = FileOpenDialog()
c'est beau, mais je ne pense pas que lorsqu'on va cliqué sur un fichier .py, ma variable $sChemin va prendre le chemin du fichier tout seul :)

Merci d'avance pour votre aide.

Re: [..] Ouverture fichier dans mon script

Posté : lun. 24 août 2015 20:50
par parazitenew
TiDi a écrit : Oui parce que ça :

Code : Tout sélectionner

$sChemin = FileOpenDialog()
c'est beau, mais je ne pense pas que lorsqu'on va cliqué sur un fichier .py, ma variable $sChemin va prendre le chemin du fichier tout seul :)
Bin si. Si tu double clique sur ton .py il se passera ceci.
Returns the full path of the file(s) chosen. Results for multiple selections are "Directory|file1|file2|..."
Ce qui veut dire que ta variable stockera le chemin complet.

Re: [..] Ouverture fichier dans mon script

Posté : lun. 24 août 2015 21:34
par TiDi
Merci pour ta réponse mais je me suis mal exprimé.

Par exemple, dans l'explorateur, lorsqu'on décide d'ouvrir un fichier .txt, il se lance avec le bloc-note.
Mais comment notepad.exe gère la possibilité qu'on lance le programme à partir de l'ouverture d'un fichier ?

En gros je voudrais que tous les fichiers .py, dès qu'on clique dessus, mon programme se lance et fasse ce qu'il a à faire avec le fichier. C'est là que j'ai besoin de vous, comment peut-on coder : si le programme se lance à partir de l'ouverture d'un fichier alors récupérer le chemin de ce fichier ?

Re: [..] Ouverture fichier dans mon script

Posté : lun. 24 août 2015 21:47
par parazitenew
TiDi a écrit :Merci pour ta réponse mais je me suis mal exprimé.

Par exemple, dans l'explorateur, lorsqu'on décide d'ouvrir un fichier .txt, il se lance avec le bloc-note.
Mais comment notepad.exe gère la possibilité qu'on lance le programme à partir de l'ouverture d'un fichier ?

En gros je voudrais que tous les fichiers .py, dès qu'on clique dessus, mon programme se lance et fasse ce qu'il a à faire avec le fichier. C'est là que j'ai besoin de vous, comment peut-on coder : si le programme se lance à partir de l'ouverture d'un fichier alors récupérer le chemin de ce fichier ?
Le bloc note se lance car il est défini comme programme par défaut pour ouvrir les fichiers txt. Il faudra donc définir ton programme comme celui qui ouvre les .py dans les propriétés des fichiers .py. Ensuite dans ton script; après le :

$sChemin = FileOpenDialog()

Rajoute

RunWait("$sChemin")

ça devrait marcher.

Re: [..] Ouverture fichier dans mon script

Posté : lun. 24 août 2015 22:11
par TiDi
Je reformule tout depuis le début :

Voici mon script avec interface :
► Afficher le texte
Lui il marche pas de problèmes. Mais ça prend autant de temps d'utiliser l'interface que d'écrire la commande sur l'invité de commande.

Ce que je voudrais maintenant, c'est de pouvoir faire reconnaitre mon programme, comme programme par défaut pour les fichiers python directement dans le script. Et c'est là où je bloque, le fichier est censé s'ouvrir avec mon programme, mais comment gérer le fait que l'ouverture du fichier provoque le lancement du programme ?

Reprenons l'exemple du bloc-note, dans le script, il devrait bien y avoir un truc du genre :

Code : Tout sélectionner

Si l'ouverture d'un fichier .txt provoque le lancement du programme alors la variable chemin prend le chemin du fichier ouvert.

Re: [..] Ouverture fichier dans mon script

Posté : lun. 24 août 2015 22:15
par jguinch
Les associations des fichiers sont gérées dans la base de registre.
En général, l'association est créée à l'installation de l'application. Le programme d'installation d'AutoIt créé les associations pour les fichiers .au3 et a3x (et peut-être d'autres...)
Python droit probablement faire la même chose à l'installation.
Que se passe-t-il si tu double-clic sur un fichier .py ? Si Python se lance, alors l'association est bien créé, il suffira d'exécuter le fichier avec ShellExecute et le tour est joué.
Sinon, tu peux créer l'association manuellement dans le registre. Par exemple, pour les script .au3, on trouve les entrées suivantes :
► Afficher le texte

Re: [..] Ouverture fichier dans mon script

Posté : mer. 26 août 2015 12:10
par TiDi
Non en fait, je voudrais que lorsque l'on double-clique sur un fichier .py, mon programme se lance et récupère juste le chemin du fichier

Re: [..] Ouverture fichier dans mon script

Posté : mer. 26 août 2015 13:57
par jguinch
OK, donc il faut que tu créé les entrées dans la base de registre.
J'ai mis un exemple dans le message précédent, il te suffit de le modifier légèrement.

Sinon, il me semble avoir déjà vu sur le forum une fonction qui permet de créer une association de fichiers simplement...