[R] Utilisation de "ouvrir avec" dans l'explorateur

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lamcat
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 16 avr. 2008 20:21
Status : Hors ligne

[R] Utilisation de "ouvrir avec" dans l'explorateur

#1

Message par lamcat »

Bonjour
J'ai un logiciel tres pratique mais juste un peu complique dans sa gestion des fichiers:
Subtitle Workshop v2.51. Mais pour un travail d'equipe avec des newbie encore plus newbies que moi j'ai commencé a ecrire des script facilitant les maneuvres avec se soft:

Mais la, je bloque vraiment dès le départ, et pourtant a en juger par ce que l'on voie comme realisations, ce que je desire n'est pas compliqué.

problème:
récupérer le nom du fichier (avec son chemin) qui est lancé par "ouvrir avec" (ou même "envoyer vers") avec mon script comme cible :
ex.:
sequence.avi>ouvrir avec>MonscriptSW.exe
puis ensuite c bon, j'ouvrir Subtitles Workshop et je charge cet avi avec un "send" de l'addresse que j'aurai recuperé.

(j'ai teste de lancer ca en ligne de commande, pas moyen dans Subtitles-WShop)

Ma seule piste: $CmdLine plante direct!
Je suis pas au point.
Je comprend pas tout...car les exemples sont trop complexes et je ne sait rien en tirer.

Je voudrais debuguer avec des Msgbox pour lire les "erreurs" mais je ne sait pas le faire.
Je suis presque dans le noir... :cry:

J'ai des "error line -1 parsing function call"...

Merci pour votre site, j'ai parcouru votre aide et le forum et ca m'a permis d'avancer et de créer un (petit) script pour le nommage des fichiers .sub . Il n'est pas bien beau mais il marche!!

ps j'ai mis deux heures a faire un script a base de: send("^p"), send("{ENTER}"), exit :)

ps2 la traduction de l'aide, alors je sais que il y a un gros lien en haut du forum "traduction", mais je pense que ca aiderai de mettre un ou deux liens permanents sur le forum...etant donné qu'il m'a ete tres utile de faire la bascule entre l'aide et le forum... je l'ai juste bookmarquée, mais...faut dire et vous devez le constater avec horreur :wink: , bon, que j'ai du mal :)
Je me plaint, je sais SVP, excusez m'en , je ne critique que ma propre incompétence, soyez en sur. :|
Modifié en dernier par lamcat le jeu. 24 avr. 2008 04:25, modifié 3 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Utilisation de "ouvrir avec" dans l'explorateur

#2

Message par Tlem »

Pouvez-vous mettre le début de votre code, pour que l'on puisse vous aider.

En ce qui concerne l'aide, un lien sera placé sans doute à différents endroits du forum.
Mais pour l'instant elle n'est pas complète, et il manque entre autre les fonctions de bases.
D'ici quelques semaines ou mois cela devrait être un peu mieux.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lamcat
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 16 avr. 2008 20:21
Status : Hors ligne

Re: Utilisation de "ouvrir avec" dans l'explorateur

#3

Message par lamcat »

Ok, c'est vrai queje n'ai pas forcement les compétences pour remarquer les manques a cette aides...Ce n'est pas faute de l'avoir parcouru, je suis plutot perdu -avec le "peu" qu'il y a :lol: - dans une foule de données trop techniques... Voila, j'ai la prétention de programmer, et la volonté, mais pour debuter je ne suis pas assez guidé par cette aide, d'ou ma question directe a des ...humains :D

j'ai fais des essais comme ça:

Pour récupérer le nom du fichier de façon interactive ( C.à.d. par ouvrir avec), d'abord je n'y arrive pas...
Mais je teste comme ca:

Code : Tout sélectionner

run("notepad.exe")
WinWaitActive("Sans titre - Bloc-Notes")
send("[$CmdLine[0]]") ;je voudrais mettre une variable pour tester...mais je ne sais pas faire alors je re-edite et re-compile.
Exit
Voila j'esperais que windows générait une commande contenant:
-le nom du script (compilé) .
-le chemin et le nom du fichier video sur lequel j'ai fait ouvrir avec.
et apperement cela n'a pas la forme d'un argument de ligne de commande ou bien, je suis completement paumé car je ne vois rien dans le bloc-notes...

Sinon ma suite ne serai pas plus interessante que :

Code : Tout sélectionner

If WinExists("[CLASS:SubtitleWorkshop]", "") Then
WinActivate("[CLASS:SubtitleWorkshop]", "")
send("^p")             ; ouvrir un film
send("$CmdLine[0]") ; la il devrai y avoir un changement ;)
send("{ENTER}")      
send("^n")             ; nouveau sous-titres blanc
Exit
ElseIf
run("subtitleworkshop.exe")
WinWaitActive("[CLASS:SubtitleWorkshop]", "")
send("^p")
send("$CmdLine[0]")  ; ca aussi ca marche pas ;)
send("{ENTER}")
send("^n")
Exit
EndIf
Exit
Bon c très laid , hein et les Exits de partout c pour satisfaire ma superstition... :roll:

[Semi-HS]
Pour avoir des sous titres de longue durée ( qui s'écrivent jusqu'à être remplacés par d'autres) , puis sauvegarder le sous titres avec le même nom que le film (extension non comprise) automatiquement en fin d'édition de SWorkS :

Code : Tout sélectionner

If WinExists("[CLASS:SubtitleWorkshop]", "") Then
 ; au cas ou un dossier Subtitle Workshop serait ouvert...
WinActivate("[CLASS:SubtitleWorkshop]", "")
send("^p") ; jeter un coup d'œil au nom du fichier vidéo en cours ( fenetre "ouvrir" choix "ouvrir un film".
send("^c") ; le copier, donc...
send("{ESCAPE}") ; on ferme 
send("^a") ; on sélectionne toutes les lignes de ss titres
send("^+e") ; on agrandit la durée des sous titres (il faut régler la durée max a 9999999 et cocher la case "empêcher les chevauchements de sous titres" dans le menu Edition-"timing"-"augmenter la durée des sous titres"
send("^+s") ; on enregistre
send("{DOWN}")         ; la fenêtre est complexe 
send("{ENTER}")         ;il faut sélectionner le bon format de sous titres on peu convertir avec ce soft d'ailleurs
send("^v")                 ;on colle le nom que l'on a pioché tout en haut
send("{BS 4}")           ; on supprime l'extension a adapter si l'extension contient 4 caracteres.
send("{ENTER}")         ; voila ça enregistre a ce stade

ElseIf                        ; la y'a rien a faire...
Exit

EndIf

Exit

 
Marche bien...vous voyez c'est pas grand chose mais ca aide beaucoup car les manipulations sur les noms de fichiers ne sont pas faciles a integrer chez les (gros) newbies... et puis ca fait passer par l'explorateur et utiliser les boutons reduire /agrandir ...
Déja avec ca "je" réussi a faire un gros boulot...

:?: D'ailleurs pour améliorer ce script, savez-vous comment on fait pour avoir le chemin du fichier lorsque on le voit juste affiché dans la fenêtre "ouvrir" d'un programme?
Aussi pour rendre le script plus "compatible"ou "universel" , j'aimerais enlever l'extension en "detectant" le "."
[/Semi-HS]

ps: http://sourceforge.net/projects/subworkshop/ on trouve le soft d'édition de sous titres là c'est d'ailleurs une hérésie car on ne trouve pas les sources et l'auteur ne répond pas aux mails...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Utilisation de "ouvrir avec" dans l'explorateur

#4

Message par Tlem »

Pour récupérer le nom d'un fichier envoyé en argument à votre script (Par drag&Drop, ou ouvrir avec), placez ceci dans la première partie de votre code :

Code : Tout sélectionner

If $CMDLINE[0] Then
        MsgBox(64, "Le fichier envoyer en paramètre est : ", $CMDLINE[1])
EndIf
Ceci ne peut fonctionner que si votre script est compilé en exécutable.

Pour lancer votre fichier avec Subtitle Workshop, rajoutez simplement : :

Code : Tout sélectionner

Shellexecute("C:\Program Files\SubtitleWorkshop\SubtitleWorkshop.exe", $CMDLINE[1])
J'ai supposé le chemin vers SubtitleWorkshop.exe, il faudra l'adapter si nécessaire.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lamcat
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 16 avr. 2008 20:21
Status : Hors ligne

Re: [..] Utilisation de "ouvrir avec" dans l'explorateur

#5

Message par lamcat »

Merci beaucoup, ca c'est de la fonction de base bien expliquee comme on les aime.
Super, trop puissant! Ca m'ouvre completement les portes pour imaginer tout plein de choses nouvelles...
Et je pense bien que mon probleme actuel sera resolu, bon c'etait un probleme bateau, hein, mais c'est enorme pour moi, et pour tous mes collegues ce sera un grand pas ...
Et ce nom : "shellexecute" ca fais trop classe en plus !!! hihi :wink:
Merci encore.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Utilisation de "ouvrir avec" dans l'explorateur

#6

Message par Tlem »

Pour rendre votre script un peut plus complet, voici une suggestion :

Code : Tout sélectionner

; Définition du chemin de l'application SubtitleWorkshop.
$SWrks = @ProgramFilesDir & "\SubtitleWorkshop\SubtitleWorkshop.exe"

If $CMDLINE[0] Then  ; On regarde si il y a au moins un argument.
    
    ; Dans la circonstance, nous nous occupons que du premier paramètre.
    ; Mais il est possible d'en gérer plusieurs.
    
    ; Il est bien de controler que le fichier envoyé en paramètre est bien un fichier vidéo.
    
    ; Je regarde les 3 derniers caractère du paramètre 1 :
    $Res = StringRight($CMDLINE[1], 3)
    ; Si $Res est bien une extension vidéo 
    If $Res = "avi" Or $Res = "mpg" Then
        ; On lance le fichier paramètre 1 avec SubtitleWorkshop
        Shellexecute($SWrks, $CMDLINE[1])
    Else
        ; Message d'erreur puis sortie.
        MsgBox(16,"Erreur", "Le fichier " & @CRLF & $CMDLINE[1] & @CRLF & "n'est pas un fichier vidéo.")
        Exit
    EndIf
        
    
Else  ; Sinon 
    
    ; Boite de dialogue d'ouverture de fichier.
    $var = FileOpenDialog("Veuillez choisir un fichier video :", "", "Videos (*.avi;*.mpg)", 1)
    
    If @error Then  ; Si il n'y à pas eu de sélection on sort.
        Exit
    Else  ; Sinon on lance $var
        Shellexecute($SWrks, $var)
    EndIf
    
EndIf
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lamcat
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 16 avr. 2008 20:21
Status : Hors ligne

Re: [..] Utilisation de "ouvrir avec" dans l'explorateur

#7

Message par lamcat »

Ca y est ca marche...c'est mois elegant que je voudrais, mais bon...
En fait je fais du copier coller dans le soft subtitles workshop car on ne peut pas le lancer avec comme argument un fichier video... Il ne lance que les fichiers sous titres.
La variable que j'utilise est $CmdLineRaw, dans le contexte, un ClipPut($CmdLineRaw) puis un send("^v"), et hop!!!!

Je realiserais le script complet pour un "environement" de sous-titreur de sequence videos a l'aide de subtitles workshop des demain > je l'enverrai ici, bien sur, j'ai ma fierte!!?

Nous on vas s'en servir pour pouvoir noter des rushs pour faciliter la tache de "nettoyage" du monteur, qui pourra ouvrir une playlist dans subtitle workshop et avoir nos annotations directement, je pense que je pourrait y arriver vite maintenant en m'inspirant de script de creation de playlist, ca doit se trouver, je pense...

Sinon ce ClipPut($CmdLineRaw) peut servir a plein d'autre choses, je pense tout de suite a la fonction de winimage qui permet de monter une image iso, mais il faut lancer winimage et aller dans les menus...pareil, avec des choix pas faciles pour un truc tout bete au final.
Dans la foulee je vais me pondre plein de petits script je pense...
Une oie a trouve un couteau ;)

Merci beaucoup, pour vos lectures et votre aide. A bientot.
lamcat
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 16 avr. 2008 20:21
Status : Hors ligne

Re: [R] Utilisation de "ouvrir avec" dans l'explorateur

#8

Message par lamcat »

Voici mon resultat du jour:

Code : Tout sélectionner

; Définition du chemin de l'application SubtitleWorkshop.
$SWrks = @ProgramFilesDir & "\URUSOFT\Subtitle Workshop\SubtitleWorkshop.exe"
ClipPut($CmdLineRaw) ; on rentre dans le presse papier le chemin du ficher video

If $CMDLINE[0] Then  ; On regarde si il y a au moins un argument.
   
    ; On controle que le fichier envoyé en paramètre est bien un fichier vidéo.
  
    ; Je regarde les 3 derniers caractère du paramètre 1 :
    $Res = StringRight($CMDLINE[1], 3)
    ; Si $Res est bien une extension vidéo
    If $Res = "avi" Or $Res = "mpg" Then
        ; On lance le fichier avec SubtitleWorkshop
        If WinExists("[CLASS:SubtitleWorkshop]", "") Then ; au cas ou Subtitle Workshop serait ouvert...
            WinActivate("[CLASS:SubtitleWorkshop]", "")
        Else
            ShellExecute($SWrks)  ; voir ligne 2
            WinWaitActive("[CLASS:SubtitleWorkshop]", "")
            send("^p") ; Ouvrir un fichier video
            send("^v") ; Coller le contenu du presse papier (voir 3eme ligne)
            send("{ENTER}")
        EndIf   
    Else
        ; Message d'erreur
        MsgBox(16,"Erreur", "Le fichier " & @CRLF & $CMDLINE[1] & @CRLF & "n'est pas un fichier vidéo.")
    EndIf

Else  ; pour le cas ou on a pas d'argument (par ex. sans passer par "ouvrir avec" )
      ; Boite de dialogue d'ouverture de fichier.
    $var = FileOpenDialog("Veuillez choisir un fichier video :", "", "Videos (*.avi;*.mpg)", 1)
   
    If @error Then  ; Si il n'y à pas eu de sélection on sort.
        Exit
    Else  ; Sinon on lance SubWS avec $var comme fichier video
        If WinExists("[CLASS:SubtitleWorkshop]", "") Then ; au cas ou Subtitle Workshop serait ouvert...
            WinActivate("[CLASS:SubtitleWorkshop]", "")
        Else
            ClipPut($var) ; On rentre le resultat dans le presse papier
            Shellexecute($SWrks)  ; voir ligne 2
            WinWaitActive("[CLASS:SubtitleWorkshop]", "")
            send("^p") ; Ouvrir un fichier video
            send("^v") ; Coller le chemin et le nom du fichier demandé ci dessus et copié dans le presse papier
            send("{ENTER}")
        EndIf
    EndIf
EndIf
    send("^n")  ;Nouveau ss titre blanc dans la foulée
    Exit        ; Terminé
 
J'aimerais bien maintenant:
-construire une "playlist"
-garder le script en tache de fond pendant l'exécution du ss titrage
-créer des boutons du genre "panoramique haut>bas", "travelling circulaire en skate-board"...
Pour tirer partie du script en tache de fond et faciliter la saisie d'éléments basiques.
-une deuxième série de sous titres (pour isoler les notes sur les idées, des commentaires techniques sur l'image) --> je pense facultatif ou très simple, par renommage.
-ultime fonction, imprimer tous les sous titres issus de la playlist (le format "subrip" .srt permet d'avoir un time code bien lisible, très utile au monteur).

Merci si vous voyez des incohérences ou choses impossibles a réaliser, de m'en faire part...
J'espère franchement que ça intéressera quelqu'un de super fort en prog... :mrgreen:
car utiliser le script en tache de fond ne doit pas être très facile (pour moi du moins) donc pour démarrer je voudrais bien quelques discuter de cet aspect d'autoscript.
lamcat
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 16 avr. 2008 20:21
Status : Hors ligne

Re: [R] Utilisation de "ouvrir avec" dans l'explorateur

#9

Message par lamcat »

PS : Ca se poste, dans les exemples, des scripts comme ça, ou c'est pas la peine?? :D
Toujours dans le but de l'ameliorer, bien sur, mais bon, ya un script de finit et je me disait qu'un sujet "subtitle workshop", pourrait un jour dépanner quelqu'un...pur égocentrisme... :wink:
A la reflexion google reference deja le post super bien, donc... 8)
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [R] Utilisation de "ouvrir avec" dans l'explorateur

#10

Message par tolf »

lamcat a écrit :

Code : Tout sélectionner

    ; Je regarde les 3 derniers caractère du paramètre 1 :
    $Res = StringRight($CMDLINE[1], 3)
    ; Si $Res est bien une extension vidéo
    If $Res = "avi" Or $Res = "mpg" Then
Il serait plus sûr de vérifier les 4 derniers caractères en comprennant le "." pour être bien sûr que l'extension est bien "avi" ou "mpg".

PS : excusez ma précision des détails
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
lamcat
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mer. 16 avr. 2008 20:21
Status : Hors ligne

Re: [R] Utilisation de "ouvrir avec" dans l'explorateur

#11

Message par lamcat »

tolf a écrit :PS : excusez ma précision des détails
Et bien, vous êtes gonfles vous autres, de vouloir m'aider... quand je le demande, en plus... Vraiment je suis outré !!! :lol: :lol:

Je vais essayer de detecter le point, maniere simple, effectivement d'arriver a plus de compatibilite (pour le .dv aussi) pour faire ce que vous me conseillez.

Ce serait bien de sortir le nom sans l'extension, aussi, pour pouvoir renommer le .srt avec la meme racine que le nom du fichier video...y inclure des pistes de sous-titres de commentaires
se ferait en rajoutant devant l'extension un petit sigle (.image.srt ; .traduction.srt etc...)

Pour regarder les sous titres avec media player classic, de plus, il y a souvent cette manipulation a faire sur le nom de fichier.

Merci.
Répondre