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

WinDev Discussion :

EnvoieTouche ou SendMessage ? [WD12]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 567
    Par défaut EnvoieTouche ou SendMessage ?
    Bonjour,

    Je sollicite vos idées pour le pilote d'une appli non windev. Celle-ci semble avoir été développée en delphi.

    J'ai créé une séquance de pilotage qui fonctionne à peu près correctement.
    J'utilise pour cela EnvoieTouche() combiné à des MultiTâche() pour attentre.

    J'ai un souci de temps d'attente. En effet, je dois mettre des temps d'attente assez long car le pc est (très) lent. Les temps de latences sont assez aléatoires et peuvent varier de plusieurs secondes. Du coup, avec la marge que je suis obligé d'ajouter, les délais entre chaque envoi de touche est excessif.

    J'ai lu que les SendMessage (recarossage semble-t'il de l'API windows), étaient blocants et du coup me premttraient de supprimer mes multitâche.

    Mais je n'arrive pas à les utiliser car je n'arrive pas à trouver la bonne valeur pour les paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Résultat> = SendMessage(<hWnd>, <Message Windows>, <wParam>, <lParam>)
    J'ai le handle de la fenêtre (API EnumDesktopWindows)
    Par contre, pour le reste, c'est un peu la loterie... Notamment si je fais la combinaison de touches ALT+F ou la touche TAB.

    Quelque'un serait-il passé maître dans l'art du pilotage d'appli avec les sendmessage sur ce forum ? si oui, merci d'avance pour vos infos.

  2. #2
    Membre confirmé Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Par défaut
    Bonjour,

    je vais aussi devoir passer par API(), SendMEssage() ou PostMessage().

    As-tu réussi à faire ce que tu voulais ?

  3. #3
    Membre émérite Avatar de wimbish
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 416
    Par défaut
    Bonjour Claude,

    Effectivement,je crois que SendMessage() est équivalent a:
    AppelDLL32("USER32", "SendMessageA", hWnd, wMsg, lParam1, lParam2)

    Le mieux pour avoir des infos c'est de passer par la msdn:
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx


    Bon courage !

  4. #4
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 567
    Par défaut
    Citation Envoyé par ToxiK Voir le message
    Bonjour,

    je vais aussi devoir passer par API(), SendMEssage() ou PostMessage().

    As-tu réussi à faire ce que tu voulais ?
    Plus ou moins. Regarde ce sujet : api windows desactiver option menu/.

    Je bloque (partiellement) la fermeture de l'appli en question car celle-ci est longue à se lancer sur la machine cible (environ 20 secondes).

    Sinon, j'utilise la fonction EnvoieTouche. Dans mon cas, cela est possible car l'appli peut être pilotée grâce aux lettres d'appel. Exemple : pour faire Fichier/Importer, je fais ALT+F puis I. Dans les boîtes de dialogue, je passe de champ en champ avec TAB.

    Entre 2 EnvoieTouche, il faut mettre des multitache(100) ou multitache(200) afin de permettre aux boîtes de dialogue de s'ouvrir.

    Attention également : la machine cible n'est pas forcément une bête de course et/ou n'a pas exactement le même OS. Dans mon cas, la machine est en win2000 et l'appli a été conçue pour...

    @Christophe : le pb de sendmessage est que tu as un mal de chien à trouver les "vraies" valeurs pour les paramètres. De plus, l'appli windev attend relativement longtemps l'acquittement...

    Merci pour le lien, mais j'avais déjà péché plein d'infos sur ce site (msdn).

    Je passe en résolu. J'essayerai de faire un topo sur ce pilotage dans la section "contribuez".

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

Discussions similaires

  1. DLL et SendMessage
    Par LordBob dans le forum MFC
    Réponses: 5
    Dernier message: 12/05/2005, 18h35
  2. Simuler saisie clavier SendMessage et WM_KEYDOWN
    Par VoLc0m dans le forum Windows
    Réponses: 8
    Dernier message: 11/05/2005, 15h31
  3. Réponses: 19
    Dernier message: 10/05/2005, 10h44
  4. sendmessage()
    Par benoit70 dans le forum MFC
    Réponses: 27
    Dernier message: 22/01/2004, 13h45
  5. SendMessage bloquant l'exécution du programme
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 03/05/2003, 19h26

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