Bonjour, j'ai deja poster une discussion sur le clavier visuel pour appeler celui natif a l'OS installé.

Maintenant j'aimerais récupéré le MainWindowHandle de la fenêtre du clavier visuel pour pouvoir faire ensuite un MoveWindow() ou autre.

Vous allez me dire, " Ta juste a prendre ton objet Process et faire :"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
// process osk
intptr M_handle = osk.MainWindowHandle();
Mais maleuresement ceci est trop facile et sa ne fonctionne pas, j'ai donc utilisé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 IntPtr winResize = FindWindow(null, "Clavier visuel");
Ceci fonctionne avec visual et sur une autre de mes machines MAIS PAS sur un windows seven qui n'a pourtant aucune particularité ! ( 32 bits )

Sur cette machine, le waitInputforIdle ne marche pas non plus, j'ai donc opté pour un
Thread.sleep(500);
qui lui fonctionne sur mon 64 bits.

En gros cela donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 if (osk.Responding)
                        {
Thread.Sleep(500);
 IntPtr winResize = FindWindow(null, "Clavier visuel");
 MoveWindow(winResize,...);
}
A oui aussi, j'ai essayer GetProcessByName("osk")
Je retrouve bien mon "osk.exe" mais quand j'espionne le MainWindowHandle, il est égale à 0 donc impossible de se servir de sa a part pour kill l'osk.

Une idée, un conseil, une solution alternative ?

Merci

KevDeta