Newsgroup: it.comp.programmare.win32
Titolo: indirizzo http

Esiste un modo per determinare il link corrente del browser attraverso
codice. Cioè se il browser è aperto alla pagina 
www.altavista.com
 , cè un
modo per determinare quel link attraverso codice ?
(forse qualche API di windows ?)
Ciao
Grazie

...

Più che API di Windows penso che tu debba utilizzare le tecnologie internet
come le CGI. Se poi esista un'API che fa già questo non te lo so proprio
dire.
Ciao
--
- Carlo -
BSSoftware Tips Mailing-List Support

 dire.
La Common Gateway Interface (CGI) riguarda la comunicazione
fra il server (o host che dir si voglia) e programmi o
script che girano sulla stessa macchina.  E` dunque una
tecnologia totalmente inappropriata per quanto richiesto.
Il problema proposto si distingue in due sotto-problemi:
a. ottenere l'interfaccia COM IWebBrowser2 della
    istanza di browser "che interessa";
b. chiamare il metodo
    HRESULT get_LocationURL(
        BSTR FAR* pbstrLocationURL
    );
    su quella IWebBrowser2.
[b] e` banale; [a] e`, in generale, diabolico.  Anche
perche` di istanze di browser (di vari modelli) aperte
in un dato istante possono esservene in numero del
tutto arbitrario, e browser come Navigator e Opera
normalmente non implementano le interfacce standard
richieste, come IWebBrowser2 (puo` darsi che abbiano
metodi analoghi loro propri, ovviamente).
Un approccio alternativo e` quello basato su DDE,
v. Q160976 in MSDN (Knowledge Base), ma DDE e` una
tecnologia obsoleta e non da consigliarsi.
Internet Explorer normalmente non si registra neppure
nella ROT, per cui non e` semplice trovare l'oggetto
COM corrispondente.
Un metodo per rimediare e` dato da Q176792, sempre
in MSDN naturalmente, per IE 4 e successivi.
In Visual Basic, ad esempio (l'entry della KB da`
anche l'equivalente MVC++, ovviamente, ma i concetti
non cambiano... e VB e` piu` conciso!-):
In order to run the following code, it is necessary
to add a reference to Shdocvw.dll and Mshtml.dll
to the Visual Basic project:
   Dim SWs As New SHDocVw.ShellWindows
   Dim IE As SHDocVw.InternetExplorer
   Private Sub Form_Load()
      Dim Doc
      List1.Clear
      List2.Clear
      Text1.Text = SWs.count
      For Each IE In SWs
         List1.AddItem IE.LocationName
         Set Doc = IE.Document
         If TypeOf Doc Is HTMLDocument Then
            'if this is an HTML page, display the title
            'may or may not be the same as LocationName
            List2.AddItem Doc.Title
         End If
      Next
   End Sub
Alex

 codice.
Probabilmente c'e` chi userebbe esotiche interfacce COM e/o della shell.
Personalmente andrei a cercare direttamente la finestra con
EnumWindows() o FindWindow(), poi cercherei la textbox in cui compare
l'indirizzo e lo leggerei con una GetWindowText().
---
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/


Ho provato ad includere Mshtml.dll. Ma non me lo consente. Quale potrebbe
essere il problema.
Ciao

Si potrebbe altrimenti controllare cosa c'è nel combobox della finestra
attiva spedendo qualche messaggio simile a WM_GETTEXT ?
Ciao
Grazie

attiva spedendo qualche messaggio simile a WM_GETTEXT ?
Si, ma non è detto che ci accedi obbligatoriamente da quel combobox!


 l'indirizzo e lo leggerei con una GetWindowText().
Purtroppo non è una textbox, ma un combobox, è non conoscendo i messaggi WM
coinvolti (sono alle prime armi con la programmazione win32) non posso fare
nulla. Mi potresti aiutare ?
Come sai la combo contiene più item. Ma per accederevi quali messaggi o
funzioni (che è la stessa cosa) devo usare ?
Ciao
Grazie

 wrote in message 8e1d9g$fj9$1...@nslave2.tin.it...

Dici in Visual Basic?  Non so, che messaggio di
errore ti da` quando cerchi di aggiungerla al
Project/References?
Alex

 funzioni (che è la stessa cosa) devo usare ?
Trovi ben documentato il tutto su MSDN, sia su CD che On-Line.
Fausto

 funzioni (che è la stessa cosa) devo usare ?
C'e` una serie di messaggi che cominciano per CB_ e CBN_ . Comunque
sostanzialmente la lista drop-down si comporta in modo molto simile a
una normale listbox.



Intanto il sistema non mi permette di includere mshtml.dll . Più pulito di
così si muore.
Inoltre preferirei accedere anche a Netscape. E non è certo facile trovare
l'interfaccia corrispondente anche lì o no ?
Ciao

 wrote in message
8e4g18$mo1$8...@nslave2.tin.it...

"Impossibile aggiungere un riferimento al file specificato!" in VB. Ho
provato anche con il C++, ma nulla neanche lě.
Ciao
Grazie

 l'interfaccia corrispondente anche lì o no ?
No, che io sappia e` impossibile; Netscape usa internamente
un clone COM chiamato XPCOM (documentato a 
www.mozilla.org
)
ma non lo espone agli umili utenti VB.
Dovrai allora studiarti la gerarchia di finestre di ogni
browser che ti interessa (e facilmente puo` cambiare da una
versione all'altra, ci sono vari modi di presentare cio`
che all'utente finale appare come "lo stesso" look) e a
quale di tutte queste finestre (se pure ne trovi una) fare
la GetWindowText.  Auguri, sembra una "pezza a colori" da
fare impallidire la memoria delle peggiori.
Alex

 l'interfaccia corrispondente anche lì o no ?
Ma accedere a netscape con FindWindow o EnumWindow e' pura follia.
Il perche' e' molto semplice. Basta che qualcuno aggiunga una estensione 
che contenga un edit control all'interno di una Dialog (a questo 
corrisponde la barra del location). Vorrei capire come tu riusciresti 
a comprendere qual'e' quello giusto. E poi per la versione 4.x si 
trova in quella posizione, per le successive sei sicuro
di ritrovarla nella stessa posizione? Nota bene che lo stesso discorso
vale anche per IE4/5.
Fausto


Posso solo sperare che le versioni future di IE e Netscape conservano le
loro caratteristiche. Di solito č cosě. E' poi scusa chi mi vieta di fare
uno scanning di tutti gli edit nella finestra e nel controllare quale di
questi contiene una stringa che inizia per "http..." , "www" o che ha piů
"/" del solito.
Potrei inoltre memorizzare i parametri dell'edit su un file esterno cosě da
poter facilmente aggiornare il soft nel caso qualcosa dovesse andare storto.
Certo non č elegante ma funziona.
Ciao

 ....
Ognuno e' libero di utilizzare la tecnica che ritiene giusta.
Il mio era solo un parere del tutto personale. 
Fausto