Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1683 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Créer et ajouter fonction au menu contextuel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Créer et ajouter fonction au menu contextuel

n°2432140
arnuche
Posté le 13-11-2022 à 17:46:02  profilanswer
 

Bonjour,
 
Je voudrais savoir s'il y a moyen de créer une option qui servirait surtout pour les fichiers txt ou doc, ou même quand on tape un message sur un forum, et la rajouter au menu contextuel de Windows 10 ?
Ce serait une inversion de 2 caractères : par exemple en cas de faute de frappe, j'aimerais pouvoir sélectionner les 2 caractères, faire un clic droit et avoir l'option "inversion" (en-dessous de couper, copier, ...) pour que ab devienne ba.
Là c'est juste une idée basique mais je pourrais ensuite faire une truc un peu plus poussé.
 
Je pensais par exemple créer un script Powershell et mettre un raccourci dans le menu contextuel, mais je ne sais pas comment faire.
 
Si vous avez une idée  :jap:


Message édité par arnuche le 13-11-2022 à 17:48:22
mood
Publicité
Posté le 13-11-2022 à 17:46:02  profilanswer
 

n°2432142
rat de com​bat
attention rongeur méchant!
Posté le 13-11-2022 à 18:48:03  profilanswer
 

J'ai plus Windows, mais à mon avis chaque programme/appli gère lui-même son menu contextuel, donc je ne suis pas certain qu'on puisse rajouter une option globalement.
 
Il existe des logiciels à "raccourcis", genre quand tu fait une certaine combinaison de touches ça va simuler des appuis clavier pour rentrer un bloc de text ou autre, à mon avis il faudrait plutôt partir dans cette direction. Mais ça risque de ne pas être simple, il faudra toucher à la API Windows, pas certain que ce soit possible en Powershell p.ex.
 
Bref, j'en sais rien. :o


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°2432145
arnuche
Posté le 13-11-2022 à 21:12:27  profilanswer
 

Ok, j'ai trouvé ça pour lancer le bloc-notes ;
https://www.zebulon.fr/astuces/prat [...] ndows.html
Donc il y a moyen de rajouter qqch dans le menu contextuel mais c'est le bloc-notes Windows, pas un script concocté par l'utilisateur.

n°2432190
rufo
Pas me confondre avec Lycos!
Posté le 14-11-2022 à 15:56:46  profilanswer
 

En général, ça se fait via des entrées dans la base de registre. Mais c'est vrai que le menu contextuel est propre à chaque appli.
Par ailleurs, ce genre de logiciel qui vient rajouter des trucs dans le menu contextuel peut ne pas être apprécié (pas mal de logiciels foireux gratuits font ça et c'est une galère à virer car le gars a mal codé la fonction de désinstall).
 
Une solution alternative dans ce qu'évoquait rat de combat : AutoIt. C'est un outil d'automatisation de clic de souris et frappe clavier. Tu fais un petit script que tu convertis en .exe qui se lancera au démarrage de Windows. Tu pourras l'appeler sur une combinaison de touches par ex. ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2432278
arnuche
Posté le 15-11-2022 à 08:51:29  profilanswer
 

Ok, et on peut faire ça avec un bat ?
Parce que dans le lien que j'ai donné, il montre qu'on peut ajouter une nouvelle clé dans le registre pour le menu contextuel et on choisit le chemin de l’exécutable associé à cette clé.
Faut voir si ça marche uniquement avec un exe ou aussi un bat.
 
Et je dois encore trouver le script qui permettrait de faire ce que j'avais imaginé.

n°2432293
rufo
Pas me confondre avec Lycos!
Posté le 15-11-2022 à 10:19:56  profilanswer
 

En .bat, tu vas galérer, je pense. Je doute que le langage soit suffisamment complet pour faire ce que tu souhaites.
Un langage qui sait manipuler les API natives de l'OS sera plus adapté.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2432294
arnuche
Posté le 15-11-2022 à 10:29:44  profilanswer
 

rufo a écrit :

En .bat, tu vas galérer, je pense. Je doute que le langage soit suffisamment complet pour faire ce que tu souhaites.


Si je trouve le moyen de faire l'inversion de caractères avec Powershell, je suppose que je peux en faire un bat (ou un exe mais je ne sais pas comment).
Si ça passe avec un bat, il faut que la clé de registre que je rajouterais reconnaisse ce bat.
 

rufo a écrit :

Un langage qui sait manipuler les API natives de l'OS sera plus adapté.


Et tu as une idée de comment faire ?

n°2432304
rufo
Pas me confondre avec Lycos!
Posté le 15-11-2022 à 11:41:07  profilanswer
 

Powershell peut-être (jamais fait donc je ne sais pas mais je pense que oui, il saura faire), Autoit ou plus classique, C#.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2432309
arnuche
Posté le 15-11-2022 à 12:04:25  profilanswer
 

Ok, je connais vaguement PS mais pas les autres, aucune connaissance en programmation.

n°2432447
arnuche
Posté le 16-11-2022 à 16:32:43  profilanswer
 

Pour la partie PS, je pensais à un simple truc du genre ;

Code :
  1. Powershell.exe
  2. Get-Childitem -Path "K:\test" | ForEach-Object { $_ | Rename-Item -NewName {$_.name -replace '(.)(.)', '$2$1' }}
  3. pause


Sauf que là il y a un chemin indiqué et que les caractères visés ne sont pas précisés, alors que la complexité de ce que je veux vient du fait que la commande ne doit s'appliquer qu'aux 2 caractères sélectionnés avec la souris, comment faire ça ?
Il y a sans doute une ligne à rajouter avant Powershell.exe, du genre "For selected characters do ...".
 
Est-ce qu'une sélection est écrite dans un fichier temporaire de Windows ? Si oui, il y aurait peut-être moyen de se référer à ce fichier.
Et quand on sélectionne des caractères (par exemple dans un fichier txt) et qu'on fait supprimer, il supprime bien uniquement la sélection, donc je suppose qu'il y a une sorte d'adresse de début et de fin des caractères à traiter (pour les couper, copier, supprimer ...), il faudrait pouvoir utiliser cette adresse (genre ligne n°126, caractères -ou colonnes- 65 et 66).


Message édité par arnuche le 16-11-2022 à 16:41:57
mood
Publicité
Posté le 16-11-2022 à 16:32:43  profilanswer
 

n°2432453
rufo
Pas me confondre avec Lycos!
Posté le 16-11-2022 à 17:11:58  profilanswer
 

Non, la sélection de caractères n'est stocké nul part sauf si avant tu fais un ctrl+c pour les mettre dans le presse-papier. D'où pourquoi je parlais d'utiliser un langage de dév classique sur Windows comme Java ou C# qui sait gérer ça. Autoit aussi.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2432501
arnuche
Posté le 17-11-2022 à 09:30:12  profilanswer
 

Ok, et pourrait-on utiliser le presse-papier ? Sauf que ça fait un clic en plus et l'idée de départ était de pouvoir lancer une commande très rapidement via clic droit après sélection.
 
Pour en revenir à ce que tu proposais plus haut ;
 

rufo a écrit :

Une solution alternative dans ce qu'évoquait rat de combat : AutoIt. C'est un outil d'automatisation de clic de souris et frappe clavier. Tu fais un petit script que tu convertis en .exe


Comment convertir en exe ?
 

rufo a écrit :

Tu pourras l'appeler sur une combinaison de touches par ex.


Et serait-ce possible de l'appeler aussi via le menu contextuel ?
D'après l'exemple donné dans le lien que j'avais posté, il semblerait qu'on puisse rajouter l'exe qu'on veut dans le registre.


Message édité par arnuche le 17-11-2022 à 09:30:33
n°2432519
rufo
Pas me confondre avec Lycos!
Posté le 17-11-2022 à 15:30:48  profilanswer
 

Y'a un outil livré avec Autoit qui fait la conversion dus script en exe.
 
Oui, en bidouillant la base de registre tu pourras. Mais perso, je ne recommande pas. Bidouiller la base de registre n'est jamais une bonne idée pour rajouter des trucs comme ça. :/
 
Au passage, ton besoin me paraît vraiment pas pertinent : le correcteur orthographique de ton navigateur web ou traitement de texte ne suffit pas pour corriger l'inversion de 2 caractères ? Parce que franchement, devoir sélectionner les 2 caractères qui posent souci à la souris puis clic droit de souris puis clic sur l'item d'inversion, autant inverser les 2 caractères soi-même, ça ira plus vite  :heink:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2432525
arnuche
Posté le 17-11-2022 à 16:01:06  profilanswer
 

rufo a écrit :

Y'a un outil livré avec Autoit qui fait la conversion dus script en exe.


Ok, j'ai vu qu'il y avait aussi BAT to EXE Converter et d'autres ;
https://bat-to-exe-converter-x64.fr.softonic.com/
https://adamtheautomator.com/bat-to-exe/
 

rufo a écrit :

Oui, en bidouillant la base de registre tu pourras. Mais perso, je ne recommande pas. Bidouiller la base de registre n'est jamais une bonne idée pour rajouter des trucs comme ça. :/


Dans l'exemple que j'avais posté plus haut ça n'avait pas l'air problématique, c'est juste l'ajout d'une clé. Mais si ça pose souci je pourrai la virer et la remplacer par une combinaison de touches (genre ALT + i).
 

rufo a écrit :

Au passage, ton besoin me paraît vraiment pas pertinent : le correcteur orthographique de ton navigateur web ou traitement de texte ne suffit pas pour corriger l'inversion de 2 caractères ? Parce que franchement, devoir sélectionner les 2 caractères qui posent souci à la souris puis clic droit de souris puis clic sur l'item d'inversion, autant inverser les 2 caractères soi-même, ça ira plus vite  :heink:


C'est vrai pour ce cas mais c'est surtout un premier test pour voir si j'y arrive.
Ça me servira ensuite pour d'autres choses plus complexes où le raccourci dans le menu contextuel me ferait gagner du temps.
 
Finalement le plus dur est de trouver le bon script. J'ai regardé AutoIt mais je n'y comprends rien  :o  
 
J'aimerais y arriver avec PS mais je ne vois pas comment utiliser les caractères sélectionnés au lieu d'un pattern. :??:

Message cité 1 fois
Message édité par arnuche le 17-11-2022 à 16:18:34
n°2432532
rat de com​bat
attention rongeur méchant!
Posté le 17-11-2022 à 17:40:56  profilanswer
 

arnuche a écrit :

J'aimerais y arriver avec PS mais je ne vois pas comment utiliser les caractères sélectionnés au lieu d'un pattern. :??:

Comme on disait c'est probablement impossible ou alors il faut passer par l'API Windows -> C#, C++, Java ou similaire (Python peut-être aussi?). Mais c'est pas évident, faut pas mal de compétences en prog.


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°2432539
arnuche
Posté le 17-11-2022 à 18:21:08  profilanswer
 

Ah, là malheureusement c'est bien au-delà de mes compétences  :(  
Il faudrait que je trouve un script similaire à ce que je cherche et que je n'aurais qu'à modifer.

n°2432542
rufo
Pas me confondre avec Lycos!
Posté le 17-11-2022 à 19:14:33  profilanswer
 

Tu sembles pas comprendre que pouvoir récupérer la sélection de caractères présent dans n'importe quelle application sous Windows, ça peut se faire qu'en manipulant les primitives systèmes de cet OS. Donc peut-être avec du PS (mais à vérifier, j'ai de gros doutes), mais pas avec un langage de script classique (sauf Autoit mais qui lui, manipule les primitives système).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2432557
arnuche
Posté le 17-11-2022 à 21:26:40  profilanswer
 

Si j'ai compris, d'où ma réponse précédente.
Et AutoIt demande des connaissances que je n'ai pas.
Mais je suis preneur d'un script d'AutoIt si quelqu'un a déjà tenté un truc similaire.

n°2432562
rufo
Pas me confondre avec Lycos!
Posté le 17-11-2022 à 22:47:07  profilanswer
 

Cat prog ici, on ne fait pas le boulot à la place de la personne :o
Essaye de faire ton programme, dis-nous où tu bloques et on sera content de t'aider à faire aboutir ton projet ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2432563
arnuche
Posté le 17-11-2022 à 23:12:47  profilanswer
 

Ben c'est ce que je fais depuis le début mais mes connaissances en la matière sont très limitées.
J'ai trouvé ce topic intéressant mais auquel je ne pige presque rien ;
https://stackoverflow.com/questions [...] ouse-click
Cette phrase a retenu mon attention ;

Citation :

PowerShell V2 and higher allow you to access Win32 APIs via the .NET PInvoke mechanism via the Add-Type cmdlet


 
Et aussi ces topics ;
https://stackoverflow.com/questions [...] o-powershe
 
https://stackoverflow.com/questions [...] powershell
 
https://www.reddit.com/r/PowerShell [...] text_from/


Message édité par arnuche le 17-11-2022 à 23:41:18
n°2438713
arnuche
Posté le 21-01-2023 à 16:32:50  profilanswer
 

Salut,
 
j'avance un peu : le plus simple reste d'utiliser le presse-papier de Windows, ce qui implique donc de copier d'abord les caractères dont j'ai besoin pour qu'ils se retrouvent dans le presse-papier et là je peux en récupérer le contenu avec PowerShell ;

Code :
  1. get-clipboard


et même l'écrire dans un fichier txt ;

Code :
  1. get-clipboard > C:\Temp\clipboard_copy.txt


 
 
Mais je bute sur 2 problèmes ;
1) je n'ai pas trouvé le bon script pour inverser 2 caractères dans un fichier txt alors que je peux le faire pour le nom d'un fichier avec ce script ;

Code :
  1. Get-Childitem -Path "C:\Temp\clipboard_copy.txt" | ForEach-Object { $_ | Rename-Item -NewName {$_.name -replace '(.)(.)', '$2$1' }}


J'ai essayé ça sans succès ;

Code :
  1. Select-String -Path "C:\Temp\clipboard_copy.txt" -Pattern.replace { '(.)(.)', '$2$1' }


Mais peut-être y a-t-il moyen de se passer de fichier txt et de faire ça directement dans la console PowerShell ? Du genre ;

Code :
  1. get-clipboard -Pattern.replace { '(.)(.)', '$2$1' }


 
2) est-il possible d'utiliser les fonctions copy/paste (ou control+c et control+v) dans un script PowerShell ?
Si oui, je pourrais mettre tout le processus dans un fichier bat que je peux appeler par raccourci clavier ou je pourrais en faire un exe avec un lien dans le menu contextuel.
 
 
Voici les étapes auxquelles j'ai pensé qui doivent suivre la sélection des 2 caractères dont je veux inverser l'ordre ;
-copie (ça se retrouve donc dans le presse-papier)
-le transfert du presse-papier vers un fichier txt (avec "get-clipboard > C:\Temp\clipboard_copy.txt" )
-inversion des 2 caractères avec PowerShell (je dois encore trouver comment)
-la sélection et copie de ce txt inversé
-son collage (paste ou control+V) qui remplace donc la sélection initiale.
 
Je ne sais pas si les étapes 1 et 5 (copy & paste provenant du menu contextuel de Windows) sont intégrables dans le script mais ce serait déjà bien de pouvoir faire les 3 du milieu.
 
Je rappelle que c'est avant tout un exercice qui me permettrait de voir ce qui est faisable pour ensuite aller vers qqch de plus complexe.
 
Si vous avec une réponse à une des questions ça m'aiderait  :jap:


Message édité par arnuche le 21-01-2023 à 16:38:30
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Créer et ajouter fonction au menu contextuel

 

Sujets relatifs
Fonction exec()Créer une appli android de sondage et publier les résultats
problème de récupération de texte avec une fonctionFfprobe - créer fichiers txt d'analyse dans sous-dossiers
Comment créer une fenêtre qui survole ma feuille Excel...[Powershell] Variable objet en paramètre de fonction & ValidateSet
Menu déroulant responsivePHP - Fonction Readline non détectée
[VBA] Fonction .MinCréer une page auteur avec Tri Alphabétique
Plus de sujets relatifs à : Créer et ajouter fonction au menu contextuel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR