Newsgroup: it.comp.programmare.win32
Titolo: Come pilotare Internet Explorer ? (COM ?)

E' possibile in qualche modo, pilotare Internet Explorer ?
Vorrei realizzare, come esercizio, una piccola applicazione che sia in
grado di passargli un url ?
Chi mi suggerisce come fare ?
Sento odore di COM o sbaglio ? :)
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]
-----------------------------------------------------

 Sento odore di COM o sbaglio ? :)
Esatto.  Vedi "Reusing MSHTML" nell'MSDN per un approccio
relativamente a basso livello; o + semplicemente istanzia
il controllo Active/X WebBrowser.  Metodi come Navigate e
Navigate2, o equivalenti proprieta`, ti offrono poi vari
modi di fare quello che desideri.
Alex

 grado di passargli un url ?
Scusa ma non basta passargli l'url come parametro su linea di comando?
Ciao
Giangi

Scusa ma non basta passargli l'url come parametro su linea di comando?
Intendevo la possibilita' di pilotarlo anche mentre e' in esecuzione.


 Intendevo la possibilita' di pilotarlo anche mentre e' in esecuzione.
Se lo hai fatto partire tu e quindi hai il relativo puntatore
COM, no problem.  Se no, ottenere il puntatore COM puo` essere
un problema, perche` IE non si registra nella ROT.  L'uso dei
"browser helper objects" e` un possibile approccio alla soluzione
del problema (e l'entry nella MSDN che ne parla illustra anche
altri approcci alternativi).
Alex

cioe', scusate, il codice e' :
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     Procedure MandaURL("Navigate2") ;
     Browser = 
     Variant::CreateObject( "InternetExplorer.Application" ) ;
     Browser.Exec( PropertySet( "Visible" ) << true ) ;
     Browser.Exec( MandaURL << "
www.disney.com
" ) ;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
     Location = Browser.Exec( PropertyGet( "LocationURL" ) ) ;
     Edit1->Text = Location ;


modi di fare quello che desideri.
Grazie Alex ! ci sono riuscito.
Con Borland C++ Builder :
class TForm1 : public TForm
{
__published:
        TButton *Button1;
        TEdit *Edit1;
        TButton *Button2;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
private:
        Variant   Browser, Location ;
public:	
        __fastcall TForm1(TComponent* Owner);
};
...
...
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     Procedure MandaURL("Navigate2") ;
     Function GetProp( "GetProperty" ) ;
     Browser = 
     Variant::CreateObject( "InternetExplorer.Application" ) ;
     Browser.Exec( PropertySet( "Visible" ) << true ) ;
     Browser.Exec( MandaURL << "
www.disney.com
" ) ;
     Location = Browser.Exec( PropertyGet( "LocationURL" ) ) ;


 
Oltre quello che ti ha detto Alex Martelli ti consiglio anche di dare
un'occhiata alle interfacce COM per l'estensione di IE5 (IDeskBand)
e ai Browser Helper Objects con la quale puoi estendere l'ormai
vecchio IE4.
Fausto

Intendevo la possibilita' di pilotarlo anche mentre e' in esecuzione.
Sicuramente la soluzione che ti ha consigliato Alex è la più pulita, ma
penso che il tutto sia risolvibile settando il testo e simulando la
pressione dell'enter sulla Edit (Combobox).
Lo dico anche per chi, come me, non sa nulla di COM (se non qualche lieve
concetto teorico).
Ciao
--
- Carlo -
BSSoftware Tips Mailing-List Support

pressione dell'enter sulla Edit (Combobox).
Il problema e' se si vuol fare qualcosa in piu' che il semplice
passaggio di un url :)
