[..] Clavier visuel sur mesure

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
captainfranki
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 26 juil. 2011 17:04
Status : Hors ligne

[..] Clavier visuel sur mesure

#1

Message par captainfranki »

Bonjour,

Je vous expose mon problème :
Suite à l'achat d'une tablette sous Windows 8 (et non pas RT), je souhaite faire une sorte de clavier visuel mais avec seulement certaines touches pour facilité l'usage de certains programmes en mode tactile.

Du coup, j'ai créer une fenêtre avec un font invisible sauf pour les contrôles, et j'ai placé cette fenêtre au premier plan en permanence.

Voici comment j'ai penser mon script :
- Le script enregistre la dernière fenêtre active
- Je clique sur un bouton de ma gui (donc ma gui à le focus)
- Le script donne le focus a la dernière fenêtres active
- le script envoie le caractère en question

Sauf que si j'appuie (par mégarde) dans la partie invisible de ma gui (au lieu d'un bouton), le focus lui est donné et donc la dernière fenêtré active c'est ma gui.
Ce qui fait que le caractère est envoyer à ma gui ...

J'ai donc essayer divers choses, qui fonctionne, mais lorsque j'appuie plusieurs fois d'affilé, la dernière fenêtre active deviens quand même ma gui :

Code : Tout sélectionner

If WinGetTitle("[ACTIVE]", "") <> "Raccourcis" Then $handle = WinGetHandle("[ACTIVE]", "")
mais aussi : ici, la fenêtre ne peux plus avoir le focus, mais les contrôles sont du coup inaccessible.

Code : Tout sélectionner

BitOR($WS_EX_TOPMOST,$WS_EX_TRANSPARENT,$WS_EX_LAYERED,$WS_EX_COMPOSITED))
Je ne sais pas si vous avez une idée ? J'aimerais empêcher ma gui de prendre le focus, mais si mes boutons ne sont plus cliquable ... C'est quand même embêtant pour un clavier visuel sur mesure x')

Dans tout les cas, je vous remercie !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..]Clavier visuel sur mesure

#2

Message par mikell »

Essaie avec WinList

Code : Tout sélectionner

Hotkeyset("a", "test")
While 1
Wend

Func test()
Local $var = WinList(), $n
For $i = 1 to $var[0][0] 
    If $var[$i][0] <> "" And BitAND(WinGetState($var[$i][1]), 2) Then 
       $n += 1
       If $n = 2 Then Exitloop
   EndIf
Next
MsgBox(0, $n, $var[$i][0])
Endfunc
Une fenêtre maintenue au 1er plan sera toujours la 1ère, la fenêtre active suivante toujours la 2ème
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre