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

MFC Discussion :

[BHO] Plugin IE : récupérer la sélection dans le navigateur


Sujet :

MFC

Vue hybride

Invité [BHO] Plugin IE : récupérer... 01/06/2006, 17h20
Invité 1. hWnd est peut-être... 01/06/2006, 17h30
nico-pyright(c) c'est quoi ce hwnd ? c'est le... 01/06/2006, 17h47
Invité C'est bien ça, hWnd est le... 01/06/2006, 17h53
nico-pyright(c) essaie ... 01/06/2006, 18h07
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [BHO] Plugin IE : récupérer la sélection dans le navigateur
    Bonjour,
    je travaille actuellement sur le développement d'un plugin IE (BHO: Browser Helper Objects). Ce plugin ajoute au menu contextuel du click droit une option supplémentaire seulement si le click est fait sur un texte sélectionné.
    Je sais détecter le click sur cette nouvelle option du menu mais j'ai maintenant besoin de récupérer la valeur sélectionnée qui me permettra le traitement derrière.

    J'ai essayé plusieurs méthodes mais soit je les ai mal utilisée soit ça n'était pas les bonnes.

    méthode 1 : renvoie une chaine vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //int len = ::GetWindowTextLength(hWnd); //renvoie 0
    LPTSTR handledString = new TCHAR[100];
    if(::GetWindowText(hWnd, handledString, 100))
          MessageBox(NULL, handledString, _T("Selected text acquired"), MB_OK);
    méthode 2 : fait planter IE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char buffer[30];
    SendMessage(hWnd, WM_GETTEXT, 30, (LPARAM) buffer);

    Si vous avez des idées de la provenance de mon erreur...
    N'hésitez pas à demander plus de précisions si cela peut vous aider.
    merci d'avance

  2. #2
    mat.M
    Invité(e)
    Par défaut
    1.
    hWnd est peut-être invalide.
    Vérifier en débogauge

    2.
    C'est peut-être du à un pb de conversion Ansi->Unicode
    WM_GETTEXT Message

    --------------------------------------------------------------------------------

    An application sends a WM_GETTEXT message to copy the text that corresponds to a window into a buffer provided by the caller.

    Syntax


    To send this message, call the SendMessage function as follows.
    lResult = SendMessage( // returns LRESULT in lResult (HWND) hWndControl, // handle to destination control (UINT) WM_GETTEXT, // message ID (WPARAM) wParam, // = (WPARAM) () wParam; (LPARAM) lParam // = (LPARAM) () lParam; );
    Parameters

    wParam
    Specifies the maximum number of TCHARs to be copied, including the terminating null character.

    Windows NT/2000/XP:ANSI applications may have the string in the buffer reduced in size (to a minimum of half that of the wParam value) due to conversion from ANSI to Unicode.


    lParam
    Pointer to the buffer that is to receive the text.
    Return Value

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    c'est quoi ce hwnd ? c'est le handle d'IE ? ca va te récuperer le titre de la fenetre, et pas ce que tu sélectionnes

    pourquoi ne pas simuler un copier-coller, comme ca tu aurais le texte selectionné dans le presse papier

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nico-pyright(c)
    c'est quoi ce hwnd ? c'est le handle d'IE ? ca va te récuperer le titre de la fenetre, et pas ce que tu sélectionnes
    C'est bien ça, hWnd est le handle de IE et j'ai regardé il est valide. Je viens de le voir dans MSDN que ça ne récupérait que le titre de la fenêtre.

    Citation Envoyé par nico-pyright(c)
    pourquoi ne pas simuler un copier-coller, comme ca tu aurais le texte selectionné dans le presse papier
    Je regarde, j'ai vu quelquechose à ce propos sur ce forum (http://www.developpez.net/forums/showthread.php?t=10254) mais le résultat ne s'y trouve pas. Je vais essayer de mon côté.
    Dernière modification par Invité ; 02/06/2006 à 14h40.

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	 keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0);
    	 keybd_event(0x43,MapVirtualKey(0x43,0),0,0);
    	 keybd_event(0x43,MapVirtualKey(0x43,0),KEYEVENTF_KEYUP,0);
    	 keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci de l'aide, j'essaie ça demain dans l'après midi (je ne peux pas avant, dsl).
    Bonne soirée vous deux

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

Discussions similaires

  1. Récupérer la sélection dans un dropdown excel
    Par thepachat dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/04/2011, 20h29
  2. Récupérer une sélection dans l'explorateur windows
    Par Crystal Noir dans le forum VB.NET
    Réponses: 4
    Dernier message: 17/11/2008, 00h49
  3. Récupérer la sélection dans une feuille inactive
    Par phdphd dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/07/2008, 09h41
  4. Réponses: 7
    Dernier message: 14/04/2007, 17h25
  5. Récupérer une sélection dans une page
    Par philippe30 dans le forum Langage
    Réponses: 5
    Dernier message: 05/12/2005, 19h02

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