[R] HotKeySet : Fin de l'assignation d'une fonction à une touche

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
GMH
Niveau 6
Niveau 6
Messages : 209
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

[R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#1

Message par GMH »

Bonjour,

Est-il possible de mettre fin à l'assignation HotKeySet d'une fonction à une touche clavier, autrement que par la sortie du programme ?

Je vous remercie.
Modifié en dernier par GMH le jeu. 13 août 2020 09:23, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2170
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] HotKeySet : Fin de l'assignation d'une fonction à une touche

#2

Message par jchd »

Oui, voir l'aide de ... HotKeySet().
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
GMH
Niveau 6
Niveau 6
Messages : 209
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [..] HotKeySet : Fin de l'assignation d'une fonction à une touche

#3

Message par GMH »

L'alinéa de l'aide concernant ma question est-il celui-ci ?
2) If you have paused the script by clicking on the AutoIt Tray icon, any hotkeys pressed during this paused state are ignored.
Désigne-t-on par "the AutoIt Tray icon" l'icône figurant un trait affichée à gauche de la croix de fermeture de la fenêtre ?

Si oui, rien n'est désactivé. Lorsque je lance un logiciel quelconque, tel que Notepad par exemple, le clavier ne répond pas tant que mon programme AutoIT n'est pas fermé.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11570
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] HotKeySet : Fin de l'assignation d'une fonction à une touche

#4

Message par Tlem »

Bonsoir.
L'icône en question est celui qui apparaît en bas à droite de votre barre de tâche, à proximité de l'heure.

Concernant votre réponse, voici l'extrait de l'aide qui y répond :

Code : Tout sélectionner

function				[optional] The name of the function to call when the key is pressed. Not specifying this parameter will unset a previous hotkey.
Bonne soirée
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é".
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1883
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] HotKeySet : Fin de l'assignation d'une fonction à une touche

#5

Message par TommyDDR »

hks.png
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
GMH
Niveau 6
Niveau 6
Messages : 209
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#6

Message par GMH »

J'avais testé cette solution mais elle me conduisait à une erreur parce que je l'avais mal comprise. J'ôtais la fonction entre les guillemets au lieu de supprimer l'argument. Je codais HotKeySet("a","") au lieu de coder HotKeySet("a").

Je vous remercie de m'avoir redirigé vers cette solution que j'avais complètement oubliée pour me perdre dans un codage de mon invention qui m'a pris des heures sans résultats probants.

Encore merci.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2170
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#7

Message par jchd »

Il vaut mieux passer une fonction plutôt que son nom sous forme chaîne, e.g. :
HotKeySet("a", _MaFonction)
au lieu de
HotKeySet("a", "_MaFonction")

Du coup l'inactivation de ce raccourci devient triviale et sans ambiguité :
HotKeySet("a")

Les fonctions sont des types de première classe depuis un bout de temps déjà.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
GMH
Niveau 6
Niveau 6
Messages : 209
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#8

Message par GMH »

Effectivement, ça fonctionne sans guillemets de part et d'autre du nom de la fonction.
Même chose avec les fonctions appelées par les contrôles. Codage plus rapide ...
Qu'entend-on par "fonction type de première classe" ?
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2170
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#9

Message par jchd »

Je veux dire que c'est un type à part entière (deux types même) :

Code : Tout sélectionner

Local $f = MsgBox
ConsoleWrite(VarGetType($f) & @LF)

$f = _Fonction
ConsoleWrite(VarGetType($f) & @LF)

$f = "MsgBox"
ConsoleWrite(VarGetType($f) & @LF)	; ne nous apporte rien

Func _Fonction()
EndFunc
Ca évite de passer une chaîne qui contient un nom de fonction erroné et de se prendre un crash le jour où l'appel se fait, ça évite aussi que Au3Stripper ne sache pas de quoi il retourne, etc.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6022
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#10

Message par mikell »

jchd a écrit : jeu. 13 août 2020 18:08Il vaut mieux passer une fonction plutôt que son nom sous forme chaîne
Le problème c'est que comme ce n'est pas mentionné dans l'aide, un utilisateur ne va pas prendre le risque de faire une erreur de syntaxe
A moins d'être un scientifique (comme toi) ou un pervers (comme moi, quoique ...) :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2170
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#11

Message par jchd »

J'ai commis une révision de l'aide sur ce sujet car en effet il y avait pas mal de manques et surtout une classification bor*élique des types.
La version révisée est dans les tuyaux et devrait sortir ... un jour.

La seule mention que j'avais repéré est là dans la version EN :

Function Notes
Functions in AutoIt are first class objects. Among other things, that means you can assign a function to a variable, pass it around as an argument or return from another function.
Aside from certain specific scope-regarding declaration rules (being that the names of the built-in functions are reserved and of UDFs' can be overwritten only locally), the names of functions do not have special status in the language.

#include <MsgBoxConstants.au3>
Local $vFunc = MsgBox
$vFunc($MB_OK, "Hi there!", "Lovely day today.")


et dans le changelog :

3.3.10.0 (23rd December, 2013) (Release)
Added: Functions can now be referenced in variables and the function can be called through the variable.
Added: FuncName().
Added: Built-in functions that take a callback now be passed directly in addition to the old method of passing as a string. Built-in functions can also be passed now (be careful that the function you pass matches what the caller expects).


Donc cette possibilité existe depuis fort longtemps mais n'a jamais été documentée complètement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6022
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#12

Message par mikell »

C'est d'un surréalisme macronien
Voilà une propriété qui existe depuis 2013 mais que personne (ou presque) ne connait parce que la seule mention en est un obscur entrefilet caché dans une partie de l'aide que personne (ou presque) ne lit jamais, et dont la seule explication à peu près claire se trouve dans le changelog
Built-in functions can now be passed directly in addition to the old method of passing as a string
:roll:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2170
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] HotKeySet : Fin de l'assignation d'une fonction à une touche

#13

Message par jchd »

Eh oui, comme avec les contrats d'assurance ou de crédit, il faut lire tout ce qui est écrit en petits caractères ; ici, le changelog à chaque release.

Je sais bien que le suivi de ce projet est bien trop lâche et mérite une réforme de fond mais je ne suis aucunement en position de faire quoi que ce soit d'efficace à ce niveau.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre