IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

MainWindowHandle d'une fenêtre


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 97
    Points : 85
    Points
    85
    Par défaut MainWindowHandle d'une fenêtre
    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

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 97
    Points : 85
    Points
    85
    Par défaut
    Au final le meilleur moyen est de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    osk.Start();
    //puis
     
     Thread.Sleep(100);
     osk.WaitForInputIdle();
     
      if (osk.Responding)
    {
         IntPtr winResize = FindWindow(null, "Clavier visuel");
    }
    Avec le thread je suis sur que le clavier démarre bien et je suis tranquille pour récupérer mon MianWindowHandle.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rendre une fenêtre modale non modale
    Par Smortex dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/03/2003, 17h56
  2. Changer l'icône d'une fenêtre à partir d'un .res
    Par henderson dans le forum C++Builder
    Réponses: 8
    Dernier message: 11/03/2003, 10h48
  3. Rendre le curseur invisible sur une fenêtre donnée
    Par Meuhmeuh dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/11/2002, 12h25
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. icône d'une fenêtre fille
    Par bastien dans le forum C++Builder
    Réponses: 6
    Dernier message: 27/05/2002, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo