Page 1 sur 1

[R] connaitre le handle du control actif

Posté : dim. 12 avr. 2020 11:54
par jl56
Bonjour à tous,

je désire connaitre le handle d'un controle actif ( ou la ou se trouve le curseur) au moment ou je valide

#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
Global $Input1 = GUICtrlCreateInput("Input1", 50, 58, 121, 21)
Global $Input2 = GUICtrlCreateInput("Input2", 48, 121, 121, 21)
Global $quitter = GUICtrlCreateButton("Quitter", 48, 150, 121, 21)
Global $List1 = GUICtrlCreateList("", 250, 56, 178, 84)
GUICtrlSetData(-1, "liste 1|liste 2|liste 3|liste4")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


Global $dummy = GUICtrlCreateDummy()
Dim $AccelKeys[1][2] = [["{ENTER}", $dummy]]
GUISetAccelerators($AccelKeys)

While 1
   $msg = GUIGetMsg()


   if $msg=$dummy Then
   $curseur=   GUIGetCursorInfo ()
;~    $curseur=ControlGetFocus($Form1)
   MsgBox(0,"contenue du controle actif est",GUICtrlRead($curseur[4]))
   EndIf
   if $msg = $quitter Then Exit

 Sleep(100)
WEnd

j'ai mis un guisetaccelerators pour avoir une action lors de la validation par la touche entrée
avec l'exemple de mon script ça fonctionne bien mais c'est associé avec la position de la souris
J'aimerais que ça fonctionne de la même façon mais seulement avec le controle actif , indépendamment de la souris
Là ou se trouve le curseur dans un input ou la ligne active dans la combo, je ne trouve pas de commande équivalente a GUIGetCursorInfo ()

Avez-vous SVP une suggestion

Merci

Portez vous bien , protégez vous et vos proches

JL56

Re: [.] connaitre le handle du control actif

Posté : lun. 13 avr. 2020 08:52
par mikell
Je vois que tu avais essayé ControlGetFocus, pourquoi tu n'as pas continué sur cette voie ?

$curseur = ControlGetFocus($Form1)
; MsgBox(0,"", $curseur & @crlf & ControlGetHandle($Form1, "", $curseur))
If StringInStr($curseur, "ListBox") Then
   $txt = ControlCommand($Form1, "", $curseur, "GetCurrentSelection")
Else
   $txt = ControlGetText($Form1, "", $curseur)
EndIf
MsgBox(0,"contenu du controle actif est", $txt)

Re: [.] connaitre le handle du control actif

Posté : lun. 13 avr. 2020 11:33
par jl56
Bonjour à tous,

Merci Mikell pour ce retour

Ho j'avais testé pas mal de chose également du coté du controlcommande mais je n'avais pas trouvé une commande qui faisait le taff sur les 2 types de control. Chose que tu dissocies par la lecture du type de control, je ne savais pas qu'on pouvait le faire , je n'y avais pas pensé.

Merci pour l'idée, je passe en résolu

A+

JL56