ATTENTION : Je ne peux pas utiliser INSTANCE et CLASSNN car l'application va évoluer ce qui implique que l'instance changera donc la CLASSNN aussi.
Exemple de mon problème.
J'ai une fenêtre appelons la "A".
"A" contient 4 panneaux "A1","A2","A3","A4" (de CLASS:static)
"A" contient 2 composants "B1","B2" (de CLASS:Static) comme les panneaux.
Propriété de "B2"
"B2" est constitué de 2 composants. "C1" et "C2"
"B2", "C1", "C2" ont le même ID mais une CLASS différente.
"B2" : ID = 1200 ; CLASS = Static ; CLASSNN=Static5
"C1" : ID = 1200 ; CLASS = Edit; CLASSNN=Edit2
"C2" : ID = 1200 ; CLASS = msctls_updown32; CLASSNN=msctls_updown322
Propriété de "B1"
"B1" est constitué de 2 composants. "D1" et "D2"
"B1", "D1", "D2" ont le même ID mais une CLASS différente.
"B1" : ID = 1300 ; CLASS = Static ; CLASSNN=Static4
"D1" : ID = 1300 ; CLASS = Edit; CLASSNN=Edit1
"D2" : ID = 1300 ; CLASS = msctls_updown32; CLASSNN=msctls_updown321
si je fais
Code : Tout sélectionner
Opt('WinTitleMatchMode', 4)
Global $ControlID = "[CLASSNN:Edit2;ID:1300]"
Global $Title = "[CLASS:#32770]"
$_Result = ControlFocus($Title, "OK", $ControlID)
sleep(2000)
$toto = ControlGetHandle($Title,"OK",$ControlID)
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$toto' & @lf & @lf & 'Return:' & @lf & $toto) ;### Debug MSGBOXle handle retourné est celui de "C1" alors que je l'ai couplé à ID=1300 au lieu de 1200? Ma conclusion est que CLASSNN est prioritaire sur l'ID et que le couplage n'est pas effectif? ( j'ai inversé ID et CLASSNN dans ma variable control ID et c'est CLASSNN qui est toujours pris en compte).
Le but de se post et la vrai question est:
Comment je peux accéder à mon control "C1" ou "C2". Je souhaite le faire grâce au couple CLASS et ID ( ne pas confondre encore une fois CLASS et CLASSNN). Tous mes essais sont restés vain.
Ce que je voulais mais qui ne fonctionne pas c'est :
Code : Tout sélectionner
Opt('WinTitleMatchMode', 4)
Global $ControlID = "[CLASS:Edit;ID:1300]"
Global $Title = "[CLASS:#32770]"
$_Result = ControlFocus($Title, "OK", $ControlID)
sleep(2000)
$toto = ControlGetHandle($Title,"OK",$ControlID)
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$toto' & @lf & @lf & 'Return:' & @lf & $toto) ;### Debug MSGBOXJ'ai essayé avec REGEXPCLASS pour travailler sur le classname(CLASSNN) mais le couplage avec ClassNN et ID ne fonctionne pas non plus.
j'attends vos réponse avec impatience. ( un petit schéma des "A" , "B" et "C" et "D" est rapide à faire pour une compréhension plus aisé).

