begin process at 2010 02 10 12:59:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Réseau & Internet

 > 

Autre

 > 

[ActiveX] obtenir l'URL de la page web


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ActiveX] obtenir l'URL de la page web

jeudi 28 mai 2009 à 11:57:57 | [ActiveX] obtenir l'URL de la page web

Loda

Membre Club
bonjour,

je cherche à obtenir l'URL de la page host de mon activeX. ça devrait être simple, non?


J'ai fais plusieurs recherches sur delphifr et d'autre forum sans rien trouver sur ce sujet.

Dans la MS KB, il y a l'article 181678 qui indique que cela est possible, mais je ne trouve pas comment utiliser l'implementation en Delphi.

J'ai trouver la Class (hum, je veux dire Interface) IOleClientSite (00000118-0000-0000-C000-000000000046) dans ActiveX.pas

Mais il semblerais que TActiveForm ne l'implemente pas, ni ne descend de TOleControl.

Est-ce possible avec les versions récentes de IE? Avez-vous de l'xp avec ce type de de problème?

Comment je suis neebie en ActiveX et que je n'ai jamais vraiment bosser avec COM, j'apprécierais vraiment un peu d'aide...

merci,


Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
vendredi 29 mai 2009 à 09:27:44 | Re : [ActiveX] obtenir l'URL de la page web

Loda

Membre Club
petite précision:

j'ai vu dans mon ProjectName_TLB.pas que l'implementation de mon ActiveForm descend de TOleControl (qui implement IOleClientSite) et non de TActiveForm.

Mais j'ignore comment je pourrait l'utiliser. (le getInterface ne me retourne pas de IOleClientSite) et de plus, l'implementation de TOleControl ne gère pas les paramètres (abstract implementation). Et je suis un peu perdu avec cette histoire de double déclaration de mon activeForm...


Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
mardi 2 juin 2009 à 13:00:06 | Re : [ActiveX] obtenir l'URL de la page web

Loda

Membre Club
Réponse acceptée !
bon....

pour finir, j'ai fais cette solution, pas parfaite, mais suffisante:


Elle a le defaut de retourner les URL de tous les tab de la fenêtre.


URLs := getURLOwnerOfActiveX(_getParentHwnd())

function _getParentHwnd(): integer;
var c: TWinControl;
begin
  c := self;
  result := c.Handle;

  while c.parent <> nil do begin
    c := c.parent;
    result := c.Handle;
  end;
end;

uses
SHDocVw, strUtils, ActiveX, UIntList;


function getURLOwnerOfActiveX(aParentHWND : integer):TStringList;
// return The URL of the web page displaying the ActiveX Form
// aParentHWND: the Handle of the ActiveX Form. (NOT of the parent of the ActiveX Form)
//
// list all the (not local) URL (tab) of the browser showing the ActiveX.

// tested with IE: 6,7
var
  SW: TShellWindows;
  SWD: IDispatch;
  WebBrowser: IWebbrowser2;
  c: integer; //count

  Handle : THandle;
  WindowsTree : TIntList;

begin
  result := TStringList.create;

  //
  // From the hanlde of the Form (ActiveX), we create the list of his parent.
  //
  // see http://msdn.microsoft.com/en-us/library/ms633510.aspx
  // (Diff. between parent and owner. Why we cannot use getParent() )
  //
  WindowsTree := TintList.Create();
  try

    //result.Add('Windows Tree');
    Handle := aParentHWND;
    repeat
      WindowsTree.add(Handle);
      //result.Add(inttostr(Handle) + ' - ' + IntToHex(Handle,8)); //debug
      Handle := GetAncestor(Handle,GA_PARENT); //
    until Handle = 0;

    //
    // We list the windows using explorer. (local file or IE)
    //

    SW := TShellWindows.Create(nil);
    try
      //result.Add('WB Tree');
      for c := 0 to SW.Count - 1 do //all shell windows
      begin
        SWD := SW.Item(c); //Get Interface Dispatch
        if SWD = nil then Continue;

        //if the windows is a IE browser
        SWD.QueryInterface(iWebBrowser2, WebBrowser);
        if (WebBrowser=nil) then continue;

        //Browsing?
        if WebBrowser.LocationURL = '' then Continue;

        //Drop the Windows Explorer windows (local file)
        if AnsiStartsText('file://',WebBrowser.LocationURL) then Continue;

        //result.Add(inttostr(WebBrowser.HWND) + ' - ' + IntToHex(WebBrowser.HWND,8));// debug

        //
        // This browser is the parent of the ActiveX
        //
        if (WindowsTree.IndexOf(WebBrowser.HWND) >= 0) then begin
          result.Add(WebBrowser.LocationURL); //Add URL form browser to list
        end;

      end;
    finally
      SW.Free;
    end;
  finally
    WindowsTree.Free;
  end;
end;


Si vous avez une autre idée, je suis intéressé par toute autre solution qui éviterait de lister les autres URLs.

A+


Loda



Cette discussion est classée dans : trouver, page, activex, url, obtenir


Répondre à ce message

Sujets en rapport avec ce message

messages d'alerte de securite activeX a repetition?? [ par pasc ] Bonjour Je possède un pc fujitsu siemens xpertwindows ME I.E 6.2 (Netscap 6.2 et c plug in depuis peu)comment ne plus avoir c fenêtres d'alerte de su Activex et param dans de l'HTML (urgent) [ par steph76 ] Voila je me lance dans la programmation d'activex pour etre utilise dans 1 page HTMLy a une partie important qui est la balise param qui permet d'envo Intéraction entre un activex et une page HTML [ par coinki ] Bonjour à tous,j'aurai savoir comment un activeX peut intéragir avec la page HTML qui l'a chargé.J'ai réalisé un activex qui récupére en Drag & Drop l Trouver la page d'un mot recherché ds un doc word [ par Delphal ] bonjour ts,j'ai trouvé une dificulté dans la lecture des interfaces d'utilisation de Word via Delphi, exactement ce qui concerne la recheche d'occuran Probleme avec les activeX [ par thone08 ] Bonjour, j'ai crer une sorte de reveil , qui a l'air prevu lance une musique , apres une petite recherche dans mes active x j'ai trouver une fonction Big probleme de cookie avec IdThhp [ par Pierre42 ] Mon probleme est le suivant : je désire récupérer une page HTML sur un site. J'ai l'URL mais je ne peux pas la passer directement en utilisant mon cod ActiveX et TWebBrowser [ par charpy49 ] Bonjour à tous,Je voudrai pouvoir créer un ActiveX contenant un browser WEB qui pointe sur une URL prédéterminée. La page sur laquelle je pointe conti Indy - Récupérer Url redirigée [ par Filipe35 ] bonjour je cherche à récupérer l'url "active" de mon composant indy. Le problème vient du fait que je charge une page tel que page.php?id=135 et ce Obtenir les liens d'une page web [ par Izidory ] Bonjour à tous. Je cherche à obtenir la liste de tous les liens hypertexte d'une page web à partir de son URL sans avoir à charger la page et je vou ouvrir une page web dans une frame [ par mano09fr ] Bonjour à tous,Voila le pb:J'ai un activeX qui est chargé dans une page web.je n'arrive pas à faire passer des infos de l'activeX à ma page web.une po


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales