[..] Ouverture fichier dans mon script

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
TiDi
Niveau 2
Niveau 2
Messages : 27
Enregistré le : sam. 06 juin 2015 23:27
Status : Hors ligne

[..] Ouverture fichier dans mon script

#1

Message 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.
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Ouverture fichier dans mon script

#2

Message 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.
TiDi
Niveau 2
Niveau 2
Messages : 27
Enregistré le : sam. 06 juin 2015 23:27
Status : Hors ligne

Re: [..] Ouverture fichier dans mon script

#3

Message 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 ?
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Ouverture fichier dans mon script

#4

Message 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.
TiDi
Niveau 2
Niveau 2
Messages : 27
Enregistré le : sam. 06 juin 2015 23:27
Status : Hors ligne

Re: [..] Ouverture fichier dans mon script

#5

Message 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.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Ouverture fichier dans mon script

#6

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
TiDi
Niveau 2
Niveau 2
Messages : 27
Enregistré le : sam. 06 juin 2015 23:27
Status : Hors ligne

Re: [..] Ouverture fichier dans mon script

#7

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Ouverture fichier dans mon script

#8

Message 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...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre