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

API, COM et SDKs Delphi Discussion :

IE : SendMessage / Postmessage


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut IE : SendMessage / Postmessage
    Yop
    le code qui pose probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Button5Click(Sender: TObject);
    begin
    hIExplorer := FindWindow('IEFrame', nil);
    Sendmessage(hIExplorer, WM_KEYDOWN, VK_MENU,1);
    Sendmessage(hIExplorer, WM_KEYDOWN, VK_HOME,1);
    Sendmessage(hIExplorer, WM_KEYUP, VK_HOME,1);
    Sendmessage(hIExplorer, WM_KEYUP, VK_MENU,1);
    end;
    c'est supposé envoyer la fenetre internet explorer vers la page de demarrage mais ca ne bouge pas .
    par contre si je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    setforegroundwindow(hIExplorer);
    keybd_event(VK_MENU, 0, 0, 0);
    keybd_event(VK_HOME, 0, 0, 0);
    keybd_event(VK_HOME, 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
    ca marche , mais c'est pas ce que je cherche =/.
    quelqun a une autre idée ?? j'ai le meme resultat que sendmessage avec postmessage

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Peut-être un problème avec le ALT+HOME et sendmessage.
    Pour contourner, essaye les raccourcis du menu ALT+A+A+d.
    C'est juste une suggestion sans garantie.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut
    Yop
    Merci a toi Graffito , en testant manuellement ca semble une bonne idée mais quand je teste avec delphi ca ne marche pas =/.
    j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.Button4Click(Sender: TObject);
    begin
    Sendmessage(hIExplorer, WM_KEYDOWN, VK_MENU,0);
    Sendmessage(hIExplorer, WM_KEYUP, VK_MENU,0);
    Sendmessage(hIExplorer, WM_KEYDOWN, 41,0);
    Sendmessage(hIExplorer, WM_KEYUP, 41,0);
    Sendmessage(hIExplorer, WM_KEYDOWN, 41,0);
    Sendmessage(hIExplorer, WM_KEYUP, 41,0);
    Sendmessage(hIExplorer, WM_KEYDOWN, 44,0);
    Sendmessage(hIExplorer, WM_KEYUP, 44,0);
    end;
    j'ai aussi testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button4Click(Sender: TObject);
    begin
    Sendmessage(hIExplorer, WM_KEYDOWN, VK_MENU,0);
    Sendmessage(hIExplorer, WM_KEYDOWN, 41,0);
    Sendmessage(hIExplorer, WM_KEYDOWN, 41,0);
    Sendmessage(hIExplorer, WM_KEYDOWN, 44,0);
    end;
    Meme resultat.
    j'ai mis 41 et 44 sachant que c la valeur de la touche A et D , car apparemment VK_A et VK_D ne marchent pas , j'ai une erreur si je met ca =/.

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Pour les touches ALT, c'est peut-être WM_SYSKEYDOWN/UP au lieu de WM_KEYDOWN/UP.

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut
    le probleme la cest avec les lettres non pas avec ALT =/.

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Dans ce cas, as-tu essayé de remplacer le WM_KEYDOWN ou simplement rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sendmessage(hIExplorer, WM_CHAR, 41,0);

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut
    toujours pas =/

  8. #8
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Une petite erreur "A" c'est $41 et non 41.

    Malheuresement, cela ne résoud pas le problème.

    Ce que j'arrive à faire :
    - récupérer le texte de l'URL,
    - envoyer des caractères dans L'URL.

    D'où une solution tordue pour spécifier l'URL, envoyer :
    - le caractère "FIN",
    - autant de backspace que la longueur de l'URL,
    - lescaractères de la nouvelle URL.

    Si ca correspond à ton besoin, je poste le code.

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut
    yop
    envoyer des caracteres dans l'url m'irais bien je pense .
    D'où une solution tordue pour spécifier l'URL, envoyer
    c'est a dire

  10. #10
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Salut,

    Voila le code (testé) :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    procedure TForm1.Button2Click(Sender: TObject);
    var hiExplorer,ClientWork,Toolbar,ComboBox,ComboBoxChild,Edit:HWND;
        wnd: HWND ;
        i,Len:integer ;
        result:array of char ;
        s : string ;
    begin
    hIExplorer := FindWindow('IEFrame',nil);
    //SetForegroundwindow(hIExplorer)  ;
    //Handle de la fenêtre de travail
    ClientWork:=FindWindowEx(hiExplorer,0,'WorkerA',nil);
    if ClientWork=0 then //Compatibilité XP / 98
        ClientWork:=FindWindowEx(hiExplorer,0,'WorkerW',nil);
    // Handle de la ToolBar (casert pas)
    Toolbar:=FindWindowEx(ClientWork,0,'ReBarWindow32',nil);
    // Handle du ComboBox
    ComboBox:=FindWindowEx(Toolbar,0,'ComboBoxEx32', nil);
    ComboBoxChild:=FindWindowEx(ComboBox,0,'ComboBox',nil);
    // Cherche le Handle du Edit
    Edit:=FindWindowEx(ComboBoxChild,0,'Edit',nil);
    //envoie les messages pour récupérer la longueur de l'URL 
    Len:=SendMessage(Edit,WM_GETTEXTLENGTH,0,0)+1;
    // récupère l'URL (mais c'est juste pour le fun)
    SetLength(Result,Len);
    SendMessage(Edit,WM_GETTEXT,Len,Integer(@Result[1]));
    // envoie le "End" puis les backspaces
    wnd:=Edit ;
    Sendmessage(wnd,WM_KEYDOWN, VK_END,0);
    Sendmessage(wnd,WM_CHAR   , VK_END,0);
    Sendmessage(wnd,WM_KEYUP  , VK_END,0);
    for i:=0 to Len-1 do begin
        Sendmessage(wnd,WM_KEYDOWN, VK_BACK,0);
        Sendmessage(wnd,WM_CHAR   , VK_BACK,0);
        Sendmessage(wnd,WM_KEYUP  , VK_BACK,0);
        end ;
    // envoie la nouvelle URL 
    s:='MyUrl' ;
    for i:=1 to Length(s) do begin
        Sendmessage(wnd,WM_KEYDOWN, ord(s[i]),0);
        Sendmessage(wnd,WM_CHAR   , ord(S[i]),0);
        Sendmessage(wnd,WM_KEYUP  , ord(S[i]),0);
        end ;
    exit ;
    end ;

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut
    yop
    Merci a toi

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

Discussions similaires

  1. Remplacer SendMessage/PostMessage par boost::?
    Par vdaanen dans le forum Boost
    Réponses: 4
    Dernier message: 17/06/2010, 09h11
  2. Réponses: 0
    Dernier message: 06/03/2009, 15h12
  3. Gestion de l'erreur, postmessage/sendmessage
    Par Takiora dans le forum Windows
    Réponses: 7
    Dernier message: 06/07/2006, 09h37
  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