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

Langage Delphi Discussion :

Pb : processMessages bloque le code


Sujet :

Langage Delphi

  1. #1
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut Pb : processMessages bloque le code
    bonjour,

    je veux simuler un clic droit, déplacement souris dans menu contextuel, puis clic gauche, mais le problème est au niveau du processMessages : si je ne le met pas, le menu ne s'affiche pas mais le reste du traitement s'execute... si je le mets, le menu s'affiche mais... le programme reste bloqué dans cette position, les traitements qui suivent ne s'executent pas... il faut faire par exemple RETURN avec le clavier pour débloquer la situation...

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    procedure SimulateRightButtonDown(ptHere:TPoint);
    begin
      SetCursorPos(ptHere.X, ptHere.Y);
      Sleep(500);
    
      {Simulate the mouse move}
      Mouse_Event(MOUSEEVENTF_ABSOLUTE or
                   MOUSEEVENTF_RIGHTDOWN,
                   ptHere.x, ptHere.y, 0, 0) ;
      Sleep(500);
      {Simulate the left mouse button up}
             Mouse_Event(MOUSEEVENTF_ABSOLUTE or
                   MOUSEEVENTF_RIGHTUP,
                   ptHere.x, ptHere.y, 0, 0) ;
    
      Application.ProcessMessages;
    
       ptHere:=Point(ptHere.x+10, ptHere.y+10);
    
       Sleep(500);
    
      {Simulate the mouse move}
      Mouse_Event(MOUSEEVENTF_ABSOLUTE or
                   MOUSEEVENTF_LEFTDOWN,
                   ptHere.x, ptHere.y, 0, 0) ;
      Sleep(500);
      {Simulate the left mouse button up}
             Mouse_Event(MOUSEEVENTF_ABSOLUTE or
                   MOUSEEVENTF_LEFTUP,
                   ptHere.x, ptHere.y, 0, 0) ;
    
    end;
    Si vous avez une solution,

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    Il me semble que l'affichage d'un Menu c'est assez ressemblant à un ShowModal, en fait, cela contourne la boucle Run normal par une boucle spécifique des messages ... je pense que les deux sont un peu contradictoire ... essaye de mettre ton code dans un Thread (vu que tu ne manipule que ptHere, ça devrait passer sans soucis, faut juste mettre )

    Après, je ne sais pas à quoi cela sert, pour tester l'interface ?
    si c'est pour lancer un code, un MenuItem.Click reste plus simple !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Il me semble que l'affichage d'un Menu c'est assez ressemblant à un ShowModal, en fait, cela contourne la boucle Run normal par une boucle spécifique des messages ... je pense que les deux sont un peu contradictoire ... essaye de mettre ton code dans un Thread (vu que tu ne manipule que ptHere, ça devrait passer sans soucis, faut juste mettre )

    Après, je ne sais pas à quoi cela sert, pour tester l'interface ?
    si c'est pour lancer un code, un MenuItem.Click reste plus simple !
    C'est pour simuler l'actions de l'utilisateur pour une demo, mouvement de la souris sur le menu, puis clic gauche... Mais je suis bloqué vu que le prog n'a plus la main apres le processMessage, ça semble correspondre à ce que tu dis pour le traitement façon fenêtre modale...

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

Discussions similaires

  1. alterner couleur de bloque avec code smarty
    Par ldiaz dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 11/11/2012, 12h47
  2. Enable en javascript bloque le code serveur
    Par haigwepa dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/11/2008, 12h51
  3. le htm bloque mon code javascript
    Par guillaumeIOB dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/12/2007, 09h20
  4. Réponses: 3
    Dernier message: 28/08/2007, 10h15
  5. [VBA] [Word] processmessage et optimisation de code
    Par Stef.web dans le forum VBA Word
    Réponses: 2
    Dernier message: 14/12/2005, 19h18

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