Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Saber la direccion URL del Internet Explorer

Estas en el tema de Saber la direccion URL del Internet Explorer en el foro de Visual Basic clásico en Foros del Web. Buen dia... Nuevamente molestando... Ya tengo claro como sacar el Titulo del internet explorer, pero no he podido encontrar el como saber por medio de ...

  #1 (permalink)  
Antiguo 20/05/2005, 18:17
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años
Puntos: 0
Saber la direccion URL del Internet Explorer

Buen dia...

Nuevamente molestando...

Ya tengo claro como sacar el Titulo del internet explorer, pero no he podido encontrar el como saber por medio de codigo, la direccion que aparece en la barra de direcciones del internet explorer;

por ejemplo; http://www.forosdelweb.com/newthread...newthread&f=69

que es la direccion de esta pagina ok

espero me puedan ayudar gracias
  #2 (permalink)  
Antiguo 21/05/2005, 03:21
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Busca la ventana del Internet Explorer con FindWindow y después coges el texto con GetWindowText.
  #3 (permalink)  
Antiguo 23/05/2005, 08:22
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años
Puntos: 0
ok. Grecias por tu ayuda, pero alparecer lo que hace la Api GetWindowText, es devolver el tiulo de la ventana, y no me devuelve la direccion

Pero Gracias...
  #4 (permalink)  
Antiguo 23/05/2005, 10:17
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por 5v5
ok. Grecias por tu ayuda, pero alparecer lo que hace la Api GetWindowText, es devolver el tiulo de la ventana, y no me devuelve la direccion

Pero Gracias...
Si lees la documentación con FindWindow, podrás ver que te devuelve ventanas padre o hijos. Debes buscar con sucesivas llamadas a FindWindow la ventana que representa la barra de direcciones.

Tienes diversas utilidades para buscarlo antes. Una que viene incluida en el paquete Visual Studio es Spy++. En el menú Spy selecciones "Find Window..." y lo buscas con la mira. Date cuenta que debes ir de padre a hijo.

También puedes ver el árbol que te muestra. Para que luego no me echen pestes, aquí tienes...

IEFrame
WorkerW
ReBarWindow32
ComboBoxEx32
ComboBox
Edit

Cuando consigas el Edit haces GetWindowText
  #5 (permalink)  
Antiguo 23/05/2005, 13:24
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años
Puntos: 0
ok..Muchas gracias.., y le voy a echar coco..para lograr sacer esa bendita Direccion URL, que ya me tiene cansado.... hasta pronto y gracias...
  #6 (permalink)  
Antiguo 23/05/2005, 13:44
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por 5v5
ok..Muchas gracias.., y le voy a echar coco..para lograr sacer esa bendita Direccion URL, que ya me tiene cansado.... hasta pronto y gracias...
De nada
  #7 (permalink)  
Antiguo 23/05/2005, 14:21
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años
Puntos: 0
Otra vez molestandote... pero ya cheke con el Spy++, y estoy intentando con este codigo:


win = FindWindow("IEFrame", vbNullString)
If win <> 0 Then
MsgBox (win)
win = FindWindow("WorkerW", vbNullString)

If win <> 0 Then
MsgBox (win)
win = FindWindow("ReBarWindow32", vbNullString)

If win <> 0 Then
MsgBox (win)

End If
End If
End If

Pero con este codigo, despues que hago la pregunta que si la clase ="ReBarWindow32", me devuelve valor 0,..

Perdon pero no soy un buen programador, como te daras cuenta, pero le echo coco
gracias y espero me puedas ayudar.....
  #8 (permalink)  
Antiguo 23/05/2005, 16:18
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años
Puntos: 0
k crees que ya encontre el error....pero ahora no puedo sacar el texto de la barra de direccion, tengo el siguiente codigo; aumente la funcion FindWindowEx, para buscar el hwnd de la ventanas hijas, como lo dijiste arriba, pero al llegar a la ventana Edit, y realizo la funcion getWindowText, me retorna 0;

win = FindWindow("IEFrame", vbNullString)
If win <> 0 Then
win = FindWindowEx(win, 0, "WorkerW", vbNullString)
win = FindWindowEx(win, 0, "ReBarWindow32", vbNullString)
win = FindWindowEx(win, 0, "ComboBoxEx32", vbNullString)
win = FindWindowEx(win, 0, "ComboBox", vbNullString)
win = FindWindowEx(win, 0, "Edit", vbNullString)
a = GetWindowText(win, n, Max_path)
MsgBox (a)

hasta pronto
  #9 (permalink)  
Antiguo 23/05/2005, 16:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Hola 5v5

Primero: todos somos iguales en este foro y estamos para ayudarnos. No te sientas inferior a expresar tus dudas

Ahora, esto ya te expliqué la última vez que hablamos, los "Edit" no tienen Caption, por lo cual siempre a te devolverá "", y yo tampoco sé donde se guarda su texto, como te expliqué.

Pero continua buscando.

ok
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 24/05/2005, 10:21
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por David el Grande
los "Edit" no tienen Caption
¡¡Toda ventana tiene Caption!!

Sea de la clase que sea... _No_ es tu control de VB llamado EditBox, sino el control estándar Edit. Es una _ventana_ de Windows (ventanas ), y por tanto, lo tiene.

El problema de usar GetWindowText no es ése, sino:
"This function cannot retrieve the text of an edit control in another application."

Además, también dice:
"To retrieve the text of a control in another process, send a WM_GETTEXT message directly instead of calling GetWindowText."

Por lo tanto, para obtener el contenido usaremos SendMessage.
  #11 (permalink)  
Antiguo 24/05/2005, 10:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Tiene Caption

Tiene Caption, pero lo que escribimos no se va en el Caption MaxExtreme, eso lo podrás comprobar con el Spy++
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 24/05/2005, 10:27
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por David el Grande
Tiene Caption, pero lo que escribimos no se va en el Caption MaxExtreme, eso lo podrás comprobar con el Spy++
Sí está en el Caption..... ¿Quieres por favor leer mi post? Pone bien claro la explicación que saqué de la MSDN y además cómo resolverlo.

El Spy++ usa GetWindowText...
  #13 (permalink)  
Antiguo 24/05/2005, 10:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Cita:
Iniciado por MaxExtreme
..... ¿Quieres por favor leer mi post?........

El Spy++ usa GetWindowText...
El problema es que yo no entiendo inglés
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 24/05/2005, 10:40
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por David el Grande
El problema es que yo no entiendo inglés
Ahora entiendo por qué no leemos la MSDN y oigamos cosas como "si alguien entiende cómo funciona la API" o... "las funciones de la API son descubiertas por hackers que trabajan en ello".

O eso, o no admites que te has equivocado... Porque contestar a alguien queriendo llevar la razón sin haber leído su post...

Te traduzco:
Cita:
Iniciado por MaxExtreme Traducción
El problema de usar GetWindowText no es ése, sino:
"Esta función no puede obtener el texto de un control Edit de otra aplicación."

Además, también dice:
"Para obtener el texto de un control de otro proceso, enviar un mensaje WM_GETTEXT directamente en vez llamar a GetWindowText."
  #15 (permalink)  
Antiguo 24/05/2005, 10:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Gracias

Gracias por esto también MaxExtreme
Tal vez estudie inglés algún día...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 24/05/2005, 10:46
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por David el Grande
Gracias por esto también MaxExtreme
Tal vez estudie inglés algún día...
De nada ;)

Estúdialo cuanto antes, el inglés informático no requiere mucho esfuerzo...
  #17 (permalink)  
Antiguo 24/05/2005, 13:52
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años
Puntos: 0
Muchas, pero muchas gracias, por su ayuda....Ya lo he logrado...Claro gracias a ustedes...

Tenias razon MaxExtreme...
  #18 (permalink)  
Antiguo 24/05/2005, 14:51
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por 5v5
Muchas, pero muchas gracias, por su ayuda....Ya lo he logrado...Claro gracias a ustedes...

Tenias razon MaxExtreme...

Gracias y de nada ;)
  #19 (permalink)  
Antiguo 25/05/2005, 00:01
 
Fecha de Ingreso: mayo-2005
Mensajes: 20
Antigüedad: 19 años
Puntos: 0
Hola 5v5

Me podrias decir como lo lograste?
  #20 (permalink)  
Antiguo 25/05/2005, 06:09
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por robertomollo
Hola 5v5

Me podrias decir como lo lograste?
¿Tal vez siguiendo mi explicación, al igual que puedes hacer tú? ;)

Por favor, no pidáis códigos hechos.
  #21 (permalink)  
Antiguo 25/05/2005, 07:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Yo tampoco entendi lo del SendMessage

Yo tampoco entendí lo del SendMessage, ya que se supone que éste devuelve Long y no String. Si podrían ayudar.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #22 (permalink)  
Antiguo 25/05/2005, 08:18
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años
Puntos: 0
Claro robertomollo;
1.- Deves de utilizar las API's; FindWindows, FindWindowsEx, SendMessage(WM_GETTEXTLENGTH,WM_GETTEXT).
2.-Tambien Necesitas saber el nombre de la clase de la ventana padre (internet explorer), y despues la clase de las ventanas hijas, hasta llegar a la ventana de nombre Edit. Utliza el Spy++
Lee arriba en la respuesta que me dio maxextreme.
Esta forma es sencilla ya que no tienes que utlizar la APIs EnumWindows,EnumChildWindows.
3.- Ya que sepas los nombres de las clases, ahora necesitas saber el hwnd de la ventana padre(IEFrame), para eso utilizas FindWindows.
4.- Ahora necesitas saber el hwnd de las ventanas hijas, hasta llegar a la ventana Edit, para esto utilizas FindWindowEx.
5.- Ya que sepas el Hwnd de la ventana Edit, Ahora utilizas la SendMessage....

y Listo..... Perdon por la ortografia, y espero le entiendan....

Mira MaxExtreme, entiendo que lo que quieres es impulsar a los del foro a que investiguen, y para que no pidan las cosas peladitas y a la boca, pero tambien hace falta un poco de explicacion un poquitin mas detallada...o k opinas...

bueno robertomollo espero te sirva de algo, si tienes dudas...para eso esta el Foro...
haaaa les aclaro que soy novato...
  #23 (permalink)  
Antiguo 25/05/2005, 08:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Esa no fue mi pregunta

Yo se lo del FindWindow y FindWindowEx, mi pregunta era donde el SendMessage te devolverá el Caption si esta función API devuelve As Long y no As String.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #24 (permalink)  
Antiguo 25/05/2005, 08:40
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Ese es el valor de retorno de la funcion SendMessageA de cualquier manera no te devuelve una String de VB sino una cadena de caracteres (array de bytes) para lo que queres obtener.

¿Como lo hace? Cuando llamas a SendMessageA el segundo parametro (Msg) siendo WM_GETTEXT el tercero debe ser el tamaño del array (en bytes) y el cuarto el puntero a la direccion del array donde copiar los datos.

PD. El valor de retorno es en el caso de WM_GETTEXT el numero de caracteres que copio en la cadena.

Para mas informacion la Biblia (MSDN): http://msdn.microsoft.com/library/en...wm_gettext.asp
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #25 (permalink)  
Antiguo 25/05/2005, 09:43
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por 5v5
Mira MaxExtreme, entiendo que lo que quieres es impulsar a los del foro a que investiguen, y para que no pidan las cosas peladitas y a la boca, pero tambien hace falta un poco de explicacion un poquitin mas detallada...o k opinas...

bueno robertomollo espero te sirva de algo, si tienes dudas...para eso esta el Foro...
haaaa les aclaro que soy novato...
Por supuesto, por supuesto, pero siempre intentando empezar con pocas explicaciones para ver si se consigue con ésas solas, y después ir ampliando. Ciertamente todos podemos conseguirlo si acudimos a la MSDN en la mayoría de los casos sabiendo inglés sin ni siquiera postear aquí.
  #26 (permalink)  
Antiguo 25/05/2005, 09:52
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por David el Grande
Yo se lo del FindWindow y FindWindowEx, mi pregunta era donde el SendMessage te devolverá el Caption si esta función API devuelve As Long y no As String.
Verás ése es el problema, no entiendes qué es un puntero, qué es una dirección de memoria, etc.

Por eso se recomienda encarecidamente aprender desde 0 con C, porque te enseñará todo ese tipo de cosas.

Código:
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

    The return value is the number of TCHARs copied, not including the terminating null character.
Como sé que no sabes inglés, te lo resumo. Los parámetros:
1 - El HWND de la ventana
2 - El mensaje, que será la constante WM_GETTEXT
3 - El número máximo de ""bytes"" (son Unicode en realidad) a rellenar en la variable que digas.
4 - El puntero a una zona de memoria que tenga como mínimo lo que hayas indicado en el 3.

No te voy a explicar ahora cómo funciona éso de la memoria, putneros y demás. Lo que pasa es que no te devuelve el resultado, sino que tú le pasas una dirección de memoria (parámetro 4) donde la función guardará el resultado. Lo que te devuelve realmente es el número de ""bytes"" (Unicode) escritos.

Por lo tanto necesitas pasarle un puntero, los cuales no funcionan en VB, aunque con VarPtr (característica de VB no documentada) puedes obtener el puntero a una variable que eligas. Lo que debes de hacer es crear un array de unos 500 caracteres y pasarle la dirección de ésta a la función.

Es complicado de entender, repito, aprende C y déjate de VB...
  #27 (permalink)  
Antiguo 25/05/2005, 10:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Cita:
Iniciado por MaxExtreme
...aprende C...
Una vez intenté programar en Visual C++ y lo máximo que hice fue insertar unos controles, imagínate entonces como me sería difícil aprender C
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #28 (permalink)  
Antiguo 25/05/2005, 10:06
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por David el Grande
Una vez intenté programar en Visual C++ y lo máximo que hice fue insertar unos controles, imagínate entonces como me sería difícil aprender C
Visual C++ es un IDE+compilador... Y lo que estabas usando eran las MFC que permiten tener un editor de formularios, las cuales son clases de C++ complejas para alguien que no ha visto nada parecido antes.

Lo que debes de entender es que la programación no se basa en ventanitas Windows. Debes aprender C programando aplicaciones sencillas DE CONSOLA, para aprender realmente a programar, centrarte en PROGRAMAR, y no en colocar botoncitos.

Muchas personas piensan como tú "imagínate C". C es sencillo dentro de lo que cabe, es un lenguaje pequeño, con una sintaxis universal que luego heredaron muchos otros lenguajes: C++, Java, C# entre los más conocidos.

Si aprendes C, aprenderás a programar. Después lo que hagas es cosa tuya, pero entenderás muchas cosas y sabrás resolver tus dudas tú mismo.

Si te gusta programar, y no lo haces por ahora por dinero, no lo dudes, ve a C y olvídate de lo que has aprendido hasta ahora.
  #29 (permalink)  
Antiguo 25/05/2005, 11:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Dos cosas

Dos cosas:
Primero: no tengo C ¿Dónde puedo conseguirlo?
Segundo: no sé ni como iniciar C (se entinde), ¿Dónde puedo encontrar un manual de por lo menos como empezar?

Sé que esto no tiene que ver con el Foro en que estamos, pero podrías responderme?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #30 (permalink)  
Antiguo 25/05/2005, 12:03
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
C es el lenguaje. Para C existen muchos compiladores: Para Windows, para Linux, para BSD, para supercomputadoras SPARC, para microchips que se ensamblan en circuitos, para móviles... Para cualquier trasto existe un compilador de C (o casi).

Compiladores para Windows:
Por ahora puedes usar DevCpp http://www.bloodshed.net/devcpp.html Gratuito y sencillo para el que acaba de empezar.
Visual C++ 6.0 para después... Tiene un debugger muy bueno integrado con el IDE.

Tutoriales:
Puedes empezar con http://www.elrincondelc.com/cursoc/cursoc.html pero no hagas caso de todo lo que tenga relación con <conio.h>. Es una librería de Borland no estándar, olvídala, céntrate en aprender C.

En cualquier caso aprender C desde 0 como Dios manda exige un ligero esfuerzo, porque te enseñará a _programar_ y además todo sobre memoria dinámica, punteros, estructuras de datos, etc. Aprenderás mucho también sobre cómo funciona un ordenador.

Tardarás más o menos, pero cuando sepas y mires hacia atrás... Entenderás la diferencia. Después el camino te le sabrás trazar tú solo (ASM, C++, ....)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:41.