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

Windows Forms Discussion :

api registermessage et sendmessagetimeout


Sujet :

Windows Forms

  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 13
    Par défaut api registermessage et sendmessagetimeout
    Bonjour à tous
    J'ai trouvé sur le web un source qui m'interresse, mais je ne comprends pas tout.

    Quelqu'un pourrait m'expliquer ce que fait le code suivant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim lRes As Integer
    Dim oDoc As IHTMLDocument2 = Nothing
    Dim lMsg As Integer = RegisterWindowMessage("WM_HTML_GETOBJECT")
    Call SendMessageTimeout(CType(hWnd, IntPtr), lMsg, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes)
    If lRes <> 0 Then Call ObjectFromLresult(lRes, IID_IHTMLDocument, 0, oDoc)
    Merci pour vos réponses

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    Les applications windows sont basées sur une file d'attente de messages contenant aussi bien des clics, des frappes de clavier que des données venant d'autres applications. Ces messages sont lus les uns après les autres et traités comme il se doit. Dotnet masque d'ordinaire tout ça, s'occupant par exemple en réaction à un message de clic d'appeler l'événement "click" adéquat sur le bouton concerné.

    RegisterWindowMessage requiert d'abord un identifiant unique pour désigner les messages dont le nom est fourni. Ici ce message doit être spécifique à une application ou un composant COM et il correspond visiblement à une demande d'un objet html.

    Puis SendMessageTimeout envoie cette demande à la fenêtre désignée par hWnd (le "handle" / la "poignée" de la fenêtre), voire à toutes les fenêtres racines du système si hWnd est égal à une certaine valeur "magique". Si au bout de 1000ms personne n'a répondu (les applis peuvent se disputer le temps CPU ou être en train de traiter un précédent message) alors l'appel échoue.

    Ensuite on lit le code de retour "lRes" : comme il n'existe pas d'exceptions en C, les fonctions win32 retournent un code de retour, 0 pour une erreur, autre chose pour un succès. Souvent en cas de succès ce code signifie aussi la valeur demandée, par exemple un pointeur différent de null (0 étant équivalent null, ça revient à tester si le résultat est différent de null)

    Ici c'est visiblement le cas puisqu'on fait appel à ObjectFromLresult pour convertir ce code de retour en l'adresse de l'objet COM demandé représentant le doc html.

Discussions similaires

  1. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  2. JEG : jAPI : Une API pour C++Builder
    Par JEG dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/11/2003, 13h50
  3. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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