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

Composants VCL Delphi Discussion :

Pré remplir le dialogue Rechercher de Windows, appel via OLE


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 87
    Points
    87
    Par défaut Pré remplir le dialogue Rechercher de Windows, appel via OLE
    Bonjour
    j'utilise le code suivant ( trouvé sur le net ) pour proposer la fonction Rechercher dans mon journal ( Log ).

    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
    procedure THTMLJournal.OpenFindDialog;
    //http://www.festra.com/wwwboard/messages/4068.html
    const
      CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
      HTMLID_FIND = 1;
    var
      CmdTarget : IOleCommandTarget;
      vaIn, vaOut: OleVariant;
      PtrGUID: PGUID;
    begin
      New(PtrGUID);
      PtrGUID^ := CGID_WebBrowser;
      if WB.Document <> nil then
        try
          WB.Document.QueryInterface(IOleCommandTarget, CmdTarget);
          if CmdTarget <> nil then
            try
              CmdTarget.Exec(PtrGUID, HTMLID_FIND, 0, vaIn, vaOut);
            finally
              CmdTarget._Release;
            end;
        except
        end;
      Dispose(PtrGUID);
    end;
    Ce qui donne :
    Nom : Twebbrowser.png
Affichages : 77
Taille : 43,6 Ko
    ça marche très bien, mais j'aimerais pré remplir la zone de recherche ( ovale rouge )
    Comment faire ? Ou chercher les paramètres de ce dialogue ?
    Je ne maitrise pas vraiment OLE...

    merci, Pascal

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 619
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 619
    Points : 12 919
    Points
    12 919
    Par défaut
    Tu pourrais simplement envoyer des WM_CHAR.

    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
    procedure TForm2.OpenFindDialog(WB: TWebBrowser; const aText :string);
    const
      CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
      HTMLID_FIND = 1;
    var
      CmdTarget : IOleCommandTarget;
      vaIn, vaOut: OleVariant;
      PtrGUID: PGUID;
      Info :TGUIThreadInfo;
    begin
      New(PtrGUID);
      PtrGUID^ := CGID_WebBrowser;
      if WB.Document <> nil then
        try
          WB.Document.QueryInterface(IOleCommandTarget, CmdTarget);
          if CmdTarget <> nil then
            try
              CmdTarget.Exec(PtrGUID, HTMLID_FIND, 0, vaIn, vaOut);
     
              //--------------------------------------------------------------------------------------------------
              if not aText.IsEmpty then
              begin
                Info.cbSize := SizeOf(Info);
                GetGUIThreadInfo(0, Info);
     
                for var i := 0 to aText.Length -1 do
                   PostMessage(Info.hwndFocus, WM_CHAR, ord(aText.Chars[i]), 0);
              end;
              //--------------------------------------------------------------------------------------------------
     
            finally
              CmdTarget._Release;
            end;
        except
        end;
      Dispose(PtrGUID);
    end;

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 87
    Points
    87
    Par défaut
    Super merci, ça fonctionne,
    reste un petit problème, mais je pense que c'est un bug de Windows:
    le texte Aucun résultat trouvé est tronqué.
    Si y'a une solution...

    Nom : Twebbrowser1.png
Affichages : 54
Taille : 39,7 Ko

    Merci, Pascal

Discussions similaires

  1. [Toutes versions] Comment appeler la boite de dialogue Rechercher/Remplacer
    Par mondev dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 02/09/2009, 00h21
  2. Fonction rechercher de Windows
    Par cocco74 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 13/11/2007, 19h03
  3. Recherche site d'appel d'offre
    Par LhIaScZkTer dans le forum Emploi
    Réponses: 2
    Dernier message: 12/06/2007, 22h52
  4. Personnaliser la boite de dialogue Rechercher
    Par javelot69 dans le forum Access
    Réponses: 7
    Dernier message: 28/09/2006, 17h03
  5. A la recherche de l'appel d'une fonction...
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 24/09/2003, 13h34

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