Nous sommes le Jeu 19 Juin, 2025 23:49
Supprimer les cookies

AutoHotKey

Image Image Forum dédié à notre projet de clé USB nomade libre sous Windows

Dim 13 Jan, 2008 11:44

Bonjour,
je cherche à compléter les actions du framalauncher et pour cela j'ai besoin de récupérer le chemin du fichier ou du dossier sur lequel je veux appliquer une action (ou bien faire en sorte que l'action doit se faire sur le(s) fichier(s) et/ou dossier(s) sélectionné(s).
Cela est-il possible avec autohotkey parce que j'ai beau parcourir le fichier d'aide et le net, je ne trouve rien sur ce sujet.

Merci de votre aide.

fredonweb
fredonweb

Messages : 37
Géo : Lyon

Mer 16 Jan, 2008 22:40

Et bien je me suis débrouillé tout seul.
Voilà un petit script qui permet d'avoir une pseudo corbeille sur sa clé : les fichiers supprimés sont en fait déplacés sur un dossier \tmp à la racine de la clé.
Ce dossier est ensuite vidé à l'aide d'un fichier .bat au démontage de la clé.

Code: Tout sélectionner
Process, Priority, , High ; Faire tourner le script le plus rapidement possible.

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance force

;si on lance le logiciel avec le paramètre /exit, il s'arrête
IfEqual, 1, /exit
ExitApp

#IfWinActive ahk_class CabinetWClass ;or IFWinActive ahk_class ExploreWClass. Au choix ou les deux. CabinetWClass = dossier, ExploreWClass = explorer
Delete:: ; appuie sur la touche "supprimer" pour déclencher l'action.

; Vérification du lecteur de la clé.
Key = %A_ScriptDir%
SplitPath, Key, , , , ,drive
letter_key = %drive%

; Vérification du lecteur du fichier.
clipboard = ; Vide le presse-papier
Send, ^x
ClipWait, 3
if ErrorLevel <> 0
{
   MsgBox, L'attente pour copier le(s) fichier(s) et/ou dossier(s) dans le presse-papier a échouée.
   return
}
file = %clipboard%
SplitPath, file, , , , ,drive
letter_file = %drive%

; Si lecteur clé = lecteur fichier, suppression du fichier.
If (letter_file = letter_key)
{
    MsgBox, 4, Confirmation de la suppression de fichier ,Les fichiers supprimés sur la clé USB sont récupérables dans le dossier %letter_key%\tmp (fichier caché) jusqu'au démontage de la clé. `n`nVoulez-vous supprimer : `n"%clipboard%" ?
    IfMsgBox, No
        return
    BlockInput, On
    RunWait, C:\WINDOWS\explorer.exe `, %letter_key%\tmp
    Sleep 200
    Send, ^v
    Sleep 200
    WinClose, A
    BlockInput, Off
    Return
}
else
{
    Delete::Delete
    Return
}
#IfWinActive


Le code est réduit à sa plus simple expression. Il ne fonctionne pas si un fichier portant le même nom que le fichier supprimé existe déjà dans le dossier \tmp, par exemple.

Mais, il répond à un pb qu'il m'arrive de temps en temps : la suppression malencontreuse d'un fichier sur ma clé. Plus besoin d'avoir recours à "recover ceci" ou "recover cela" pour retrouvé mon ou mes fichier(s).

fredonweb
fredonweb

Messages : 37
Géo : Lyon

Mer 16 Jan, 2008 23:14

Bonsoir,

C'est très intéressant ça !
Ca ouvre de grande perspective !
Ca bouillone dans mon petit cerveau ! Faut que j'arrête... j'ai déjà un autre projet en ce moment... lol
En tout cas, félicitation !

Mais j'ai quelques remarques et questions à te poser.

Si j'ai bien compris ton code, ton script ne rentre en action qu'au moment de l'appuie de la touche "del", non ?
Ca serait un plus non négligeable de prévoir un script pour aussi les suppressions par l'interface de Windows.

De plus, tu mets ton script en priorité haute.
Sur le principe ce n'est pas idiot mais il pourrait arriver que si ton script s'emballe cela fasse ralentir le PC.
Je me demande comment réagis ton script sur Vista...

Voilà pour mes principales remarques ^^
Ca reste un script très intéressant mais qui serait très utile d'appronfondir :wink:
La force n'est pas dans le code mais dans les mains de ceux qui le tape.
Lacro59

Messages : 46
Géo : Neuvillois !

Jeu 17 Jan, 2008 10:59

Bonjour,

effectivement, le script n'est lancé que par la touche "del" et seulement pour les fichiers localisés sur la clé. Dans les autres, cas, c'est la fonction native de windows qui se lance.
La suppression d'un fichier sur la clé par le menu contextuel (clic souris droit) lance également la fonctionne native de windows. Ce qui laisse le choix de la suppression des fichiers sur la clé : soit par le script, soit par windows.

Je n'ai testé le script que sur XP. (Vista, c'est quoi ?)

Concernant l'utilisation de la priorité haute : l'exécution du script n'est pas très rapide (en résumé : copier les fichiers, ouvrir l'explorateur, coller les fichiers, fermeture de l'explorateur). J'ai compris que cette ligne permettait d'allouer le maximum de ressources au script et donc d'accélérer son exécution. Je n'ai pour le moment pas eu de pb à ce sujet dans mes différents tests.

Ce qui "plante" le plus souvent pour le moment, c'est l'utilisation du presse papier : les fichiers n'ont pas le temps d'être copiés, donc erreur.

Effectivement, le script pourrait être amélioré. Je découvre tout juste autohotkey, je n'ai pas encore assimilé toutes les subtilités de l'outil.

fredonweb
fredonweb

Messages : 37
Géo : Lyon

Jeu 17 Jan, 2008 12:46

bonjour fredonweb et Lacro59,

Tuxmouraille travaille déjà avec autohotkey, et tente d'améliorer CAFE petit à petit. En outre il travaille sur une corbeille virtuelle, un peu comme la tienne fredonweb, ça se passe ici.

Vous pourriez éventuellement vous rapprocher de lui pour voir son avancement, apporter des idées ou vos compétences, voire mettre en commun votre boulot, histoire que plusieurs personnes ne travaillent pas chacune de leur côté à une même chose. Je pense que ca pourrait être intéressant pour chacune des parties, et j'ai bon espoir que vous nous trouviez quelque chose de vraiment sympa :).

Cordialement
Dernière édition par dedenimes le Ven 18 Jan, 2008 22:32, édité 1 fois au total.
L'homme n'est pas fait pour travailler et la preuve, c'est que ça le fatigue. (Marcel Proust)
dedenimes

Messages : 2410
Géo : proche de Nîmes

Ven 18 Jan, 2008 22:04

Effectivement, rien ne sert de refaire ce qui a déjà été fait.
Je poursuis dans l'autre post.

fredonweb
fredonweb

Messages : 37
Géo : Lyon

Jeu 24 Jan, 2008 22:21

je ferme donc ce fil.

Amicalement
L'homme n'est pas fait pour travailler et la preuve, c'est que ça le fatigue. (Marcel Proust)
dedenimes

Messages : 2410
Géo : proche de Nîmes

Forum verrouillé

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit