Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2008
Avatar de Draker
Draker Draker is offline
Miembro
 
Registrado: ene 2005
Posts: 27
Poder: 0
Draker Va por buen camino
Obtener URLs abiertas de Internet Explorer

Buenas tardes, Utilizando el siguiente codigo, puede saberse la URL de la pagina del IE.

Código Delphi [-]
function GetText(WinHandle: THandle): string;
var
  P: array[0..256] of Char;
begin
  P[0] := #0;
  GetWindowText(WinHandle, P, 255);
  if P[0] = #0 then Result := ''
  else
    Result := P;
end;

procedure TformMenuPrincipal.Button1Click(Sender: TObject);
var 
  Hx: THandle;
  P: array[0..256] of Char;
  Item: TListItem;
begin
  lsListaVentanas.Items.Clear;
  Hx := FindWindow(nil, nil);
  GetClassName(Hx, P, SizeOf(P));
  if string(P) = 'IEFrame' then
  begin
    Item := lsListaVentanas.Items.Add;
    Item.SubItems.Add(IntToStr(Hx));
    Item.Caption := GetText(Hx);
  end;
  while Hx <> 0 do
  begin
    Hx := GetWindow(Hx, GW_HWNDNEXT);
    GetClassName(Hx, P, SizeOf(P));
    if string(P) = 'IEFrame' then
    begin
      Item := lsListaVentanas.Items.Add;
      Item.SubItems.Add(IntToStr(Hx));
      Item.Caption := GetText(Hx);
    end;
  end;
end;

El problema es que ahora con el IE7, pues utiliza multiples pestañas por lo cual este codigo no es efectivo, la pregunta es:
De que manera puedo obtener la URL de todas las Tabs del IE?
De antemano mil gracias..
Responder Con Cita
  #2  
Antiguo 02-06-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
procedure EnumTabs(hWnd: Cardinal; List: TStrings); // IE7
var Buffer: array [0..255] of Char;
begin
 while LongBool(hWnd) do
  begin
   GetClassName(hWnd, @Buffer, SizeOf(Buffer) - 1);
   if not LongBool(lstrcmp(@Buffer, 'TabWindowClass')) then
    begin
     GetWindowText(hWnd, @Buffer, SizeOf(Buffer) - 1);
     List.Add(PChar(@Buffer));
    end;
   hWnd := GetWindow(hWnd, GW_HWNDNEXT);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 EnumTabs(GetWindow(FindWindow('IEFrame', nil), GW_CHILD), ListBox1.Items);
end;
Responder Con Cita
  #3  
Antiguo 03-06-2008
Avatar de Draker
Draker Draker is offline
Miembro
 
Registrado: ene 2005
Posts: 27
Poder: 0
Draker Va por buen camino
cHackAll, eres grande, funciona a la perfección.
Me gustaria hacerte otra pregunta, mira aparte del IE7 se utiliza el Maxthon, para el IE7 como tu bien lo mencionas la clase para el Tab es: TabWindowClass.
Pero para el Maxthon (Maxthon2_Frame) no logro encontrarle la clase que le corresponda, podrias echarme la mano en esto?

Te comento que utilizando el WindowSE he visto esto para el IE7:


Pero para el Maxthon me presenta esto:



Desde ahora mil gracias....

Última edición por Draker fecha: 03-06-2008 a las 15:31:33.
Responder Con Cita
  #4  
Antiguo 18-06-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Efectivamente no se puede obtener el resultado esperado de la misma forma, sin embargo; SI se crean un grupo de objetos del IE por cada página abierta;

+Shell DocObject View
++Internet Explorer_Server

Entonces lo que necesitas hacer es obtener un objeto OLE-COM del IE desde un Window Handle usando algun método; AccessibleObjectFromWindow.

Suerte
Responder Con Cita
  #5  
Antiguo 27-05-2010
JuanCruz JuanCruz is offline
Registrado
 
Registrado: abr 2006
Posts: 1
Poder: 0
JuanCruz Va por buen camino
Buenas noches.
También he probado este código y funciona de maravilla. Abusando de su gentil respuesta quería consultar lo siguiente: con esta función, obtengo el título de la solapa y puedo pasarle el codigo PostMessage(hHwnd, WM_QUIT, 0, 0); para cerrarla en caso de que no sea una página que no esté autorizada para poder ver. En mi sistema tengo un archivo de texto solo con los sitios permitidos uno bajo el otro, con la función obtengo el título de la solapa, la comparo y en caso de no estar permitida la cierro. Mi problema se presenta cuando tengo varias páginas permitidas que surgen de una primera permitida (estarían todas permitidas) por ahora lo soluciono agregando en el archivo de texto uno a uno los nombres pero quisiera saber si lo puedo hacer como una regla ejemplo: paginapermitida/* (donde /* significa todas las que se abran desde esta primera).
Espero haber redactado claramente y de antemano estoy muy agradecido
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Internet Explorer 8 jhonny Noticias 5 04-05-2007 18:44:45
problema con Internet explorer ebeltete Windows 1 07-03-2007 19:48:28
Pegándome con Internet Explorer 7 Ñuño Martínez La Taberna 7 20-11-2006 16:15:30
Internet Explorer 7 Final dec Noticias 6 23-10-2006 01:56:40
Obtener el path del ejecutable del internet Explorer cone220 Varios 9 27-05-2004 01:34:02


La franja horaria es GMT +2. Ahora son las 14:13:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi