Page 1 sur 1
[R] HotKey(---)
Posté : mar. 27 janv. 2015 14:22
par Capablanca
Bonjour à tous,
HotKey(xx,xx) permet d'aller dans une Func à l'aide d'un appui touche clavier.
Parfait.
Par exemple, HotKey(A,maFunc) ira à la Func maFunc() si l'utilisateur appui sur la touche A.
Comment fait-on pour aller dans une Func qui a des paramètres avec HotKey ?
Exemple : Func maFunc(param1,param2).
Merci à ceux qui savent de donner quelques pistes de réflexion.
Re: [..] HotKey(---)
Posté : mar. 27 janv. 2015 14:30
par DimVar
Bonjour,
Comme le dit la doc :
The called function can not be given parameters. They will be ignored.
Cdlt, Dimvar.
[EDIT] Clique sur EDITER sur ton premier message.
[R]
Posté : mar. 27 janv. 2015 14:50
par Capablanca
Merci à toi.
Tant pis pour les paramètres.
C'est quand même dommage.
(je n'arrive pas à mettre le [R] au début du premier message. Comment on fait ?
J'ai beau tapez un R, cela ne veut pas s'inscrire).
Re: [..] HotKey(---)
Posté : mar. 27 janv. 2015 15:45
par TommyDDR
On ne peut pas le faire de base mais on peut le coder ^^
Tenez, codé rien que pour vous
(Vous aurez aussi besoin de l'UDF
_ArrayEx.au3)
► Afficher le textecode
Code : Tout sélectionner
#include "_ArrayEx.au3"
Enum $C_HKS_KEY, $C_HKS_FUNC, $C_HKS_PARAMS, $C_HKS_MAX
Enum $C_HK_KEY, $C_HK_NUMBER, $C_HK_MAX
Global $_hotKeySet[0][$C_HKS_MAX]
Global $_hotKeys[0][$C_HK_MAX]
Func _HotKeySet($hKey, $func = "", $add = True, $param1 = Null, $param2 = Null, $param3 = Null, $param4 = Null, $param5 = Null)
Local $retour = False
If(IsFunc($func)) Then
Local $index = _Array_FindDouble2D($_hotKeySet, $hKey, $C_HKS_KEY, $func, $C_HKS_FUNC)
ConsoleWrite($index & @CRLF)
If($add) Then
If($index = -1) Then
$index = _Array_Add($_hotKeySet, "")
EndIf
Local $params = [$param1, $param2, $param3, $param4, $param5]
ReDim $params[@NumParams-3]
_Array_Set($_hotKeySet, _AsArray($hKey, $func, $params))
$index = _Array_Find2D($_hotKeys, $hKey, $C_HK_KEY)
If($index = -1) Then
HotKeySet($hKey, "HotKeySetFunc")
$index = _Array_Add($_hotKeys, _AsArray($hKey, 0))
EndIf
$_hotKeys[$index][$C_HK_NUMBER] += 1
$retour = True
ElseIf($index >= 0) Then
_Array_Delete($_hotKeySet, $index)
Local $index = _Array_Find2D($_hotKeys, $hKey, $C_HK_KEY)
If($index >= 0) Then
$_hotKeys[$index][$C_HK_NUMBER] -= 1
If($_hotKeys[$index][$C_HK_NUMBER] <= 0) Then
_Array_Delete($_hotKeys, $index)
HotKeySet($hKey)
EndIf
$retour = True
EndIf
EndIf
EndIf
Return $retour
EndFunc
Func HotKeySetFunc()
For $i = 0 To UBound($_hotKeySet, 1)-1
If($_hotKeySet[$i][$C_HKS_KEY] = @HotKeyPressed) Then
Local $params = $_hotKeySet[$i][$C_HKS_PARAMS]
Switch UBound($params, 1)
Case 0
$_hotKeySet[$i][$C_HKS_FUNC]()
Case 1
$_hotKeySet[$i][$C_HKS_FUNC]($params[0])
Case 2
$_hotKeySet[$i][$C_HKS_FUNC]($params[0], $params[1])
Case 3
$_hotKeySet[$i][$C_HKS_FUNC]($params[0], $params[1], $params[2])
Case 4
$_hotKeySet[$i][$C_HKS_FUNC]($params[0], $params[1], $params[2], $params[3])
Case 5
$_hotKeySet[$i][$C_HKS_FUNC]($params[0], $params[1], $params[2], $params[3], $params[4])
EndSwitch
EndIf
Next
EndFunc
; ---------- test -------------
_HotKeySet("²", go, True, "Titre", "Message")
_HotKeySet("&", go, True, "Titre2", "Message2")
While(True)
Sleep(100)
WEnd
Func go($title, $txt)
ConsoleWrite($title & " : " & $txt & @CRLF)
EndFunc
Code : Tout sélectionner
_HotKeySet($key, $func, $add, $param1, ..., $param5)
$key = touche
$func = fonction (sans guillemets)
$add = true pour ajouter, false pour supprimer
$paramX = paramètre à envoyer à la fonction
Limites :
- Vous ne pouvez ne mettre qu'un couple de HotKey / Fonction identique, si vous refaites un _HotKeySet de la meme touche + même fonction, cela écrasera la précédente
- N'accepte actuellement que 5 paramètres maximum (vous pouvez facilement augmenter cette valeur en touchant un peu au code
