PDA

Visualizza la versione completa : [visual c++] Ottenere e stampare url da browser e avviare ricerca da textbox


Rising1
03-03-2012, 13:20
Con tanti browser che ci sono certamente non se ne sentiva la mancanza di un altro, ma tanto per sperimentare e ho voluto creare uno personalizzato, ma ho incontrato alcuni problemi:
-Non riesco ad ottenere in tempo reale l'url della pagina che si sta visitando:
vorrei infatti stamparlo in tempo reale in una label.
-avete presente la barra in alto di Chrome? in quella barra si può sia inserire un indirizzo web, sia avviare una ricerca. Per l'inserimento di un URL non c'è problema, ma è possibile "passare" a google direttamente la cosa da cercare??

per la prima questione io ho provato con



private: System::Void webBrowser1_Navigated(System::Object^ sender, System::Windows::Forms::WebBrowserNavigatedEventAr gs^ e)
{
address->Text=(System::String ^)webBrowser1->Url;
}

dove address è la textbox dove dovrebbe apparire in tempo reale l'indirizzo, ma nulla.
Ho provato a usare lo stesso comando nell'evento "DocumentCompleted"

lavoro su Windows 7 64 bit e Microsoft Visual C++ Express 2010

Rising1
03-03-2012, 14:34
no allora al primo punto ho risolto:
non doveva essere

address->Text=(System::String ^)webBrowser1->Url;

ma semplicemente

address->Text=webBrowser1->Url->AbsoluteUri


ma rimane ancora il secondo problema :spy:

ardito86
03-03-2012, 15:19
Per il secondo problema ti devi collegare a questo sito:


http://www.google.it/search?ie=UTF-8&q=Frase%20da%20cercare

dove Frase%20da%20cercare è la query di ricerca

Rising1
03-03-2012, 17:57
edit, ah era un vero consiglio :spy:

che figura.... :facepalm:

oregon
03-03-2012, 18:01
Originariamente inviato da Rising1
:sadico: che simpaticone

pare che non l'ho fatto :mem:

sarà che non so cercare su google ma non trovo niente

Mi sa che non hai capito ... ti è stata data la risposta al tuo secondo problema, non ti è stato detto di cercare su google.

Rising1
03-03-2012, 18:04
:biifu:

ecco... allora niente, provo e vi faccio sapere

è che mi aspettavo chissà quale funzione e chissà che parametri per questo ho pensato male :mame:

Rising1
03-03-2012, 22:29
sto provando a fare come suggerito, ma prima ovviamente devo elaborare l' input in modo da mettergli quei "%20" al posto degli spazi
ecco il codice:



bool punto=false;
int j=39;
System::String ^ analize;
System::String ^ nuovo="http://www.google.it/search?ie=UTF-8&q=";
analize=inserturl->Text;

// dove inserturl è la textbox dove l'utente scrive l'url o la cosa da cercare

for (int i=0;i<(inserturl->Text->Length);i++) {
if (analize[i]=='.') punto=true; }
if (punto) webBrowser1->Navigate(inserturl->Text);

//In pratica per semplificare se l'utente mette un punto vuol dire che sta mettendo un
//indirizzo, come google.it o youtube.com etc, in tutti gli altri casi vuole fare una ricerca su google

else {
for (int i=0;i<analize->Length;i++) {
if (analize[i]==' ')
---> {nuovo[j]='%'; j=j+1; nuovo[j]='2'; j=j+1; nuovo[j]='0'; j=j+1;} else
---> {nuovo[j]=analize[i];j=j+1;}
}

// lo so, un macello, ma ho poca dimestichezza con questa "nuova" gestione delle stringe nel
//c++. In pratica se trovo uno spazio metto in Nuovo[] un %20 e ricomincio a copiare
//i caratteri ad uno ad uno. così per tutti gli altri spazi.

webBrowser1->Navigate(nuovo);

//ed infine inizio la ricerca.
}


gli errori sono dove ci sono le frecce:

"error C3070: 'System::String::default': la proprietà non ha un metodo 'set' "

ardito86
03-03-2012, 23:22
Originariamente inviato da Rising1
sto provando a fare come suggerito, ma prima ovviamente devo elaborare l' input in modo da mettergli quei "%20" al posto degli spazi
ecco il codice:



bool punto=false;
int j=39;
System::String ^ analize;
System::String ^ nuovo="http://www.google.it/search?ie=UTF-8&q=";
analize=inserturl->Text;

// dove inserturl è la textbox dove l'utente scrive l'url o la cosa da cercare

for (int i=0;i<(inserturl->Text->Length);i++) {
if (analize[i]=='.') punto=true; }
if (punto) webBrowser1->Navigate(inserturl->Text);

//In pratica per semplificare se l'utente mette un punto vuol dire che sta mettendo un
//indirizzo, come google.it o youtube.com etc, in tutti gli altri casi vuole fare una ricerca su google

else {
for (int i=0;i<analize->Length;i++) {
if (analize[i]==' ')
---> {nuovo[j]='%'; j=j+1; nuovo[j]='2'; j=j+1; nuovo[j]='0'; j=j+1;} else
---> {nuovo[j]=analize[i];j=j+1;}
}

// lo so, un macello, ma ho poca dimestichezza con questa "nuova" gestione delle stringe nel
//c++. In pratica se trovo uno spazio metto in Nuovo[] un %20 e ricomincio a copiare
//i caratteri ad uno ad uno. così per tutti gli altri spazi.

webBrowser1->Navigate(nuovo);

//ed infine inizio la ricerca.
}


gli errori sono dove ci sono le frecce:

"error C3070: 'System::String::default': la proprietà non ha un metodo 'set' "

Non ne sono sicuro, ma ci dovrebbero essere sono apposite funzioni di libreria che fanno queste cose (ti convertono anche i caratteri accentati, gli apostrofi ecc.) tipo questa: http://php.net/manual/en/function.htmlspecialchars.php

Per risolvere invece ilo tuo problema, prova a contare prima tutti gli spazi, e man mano ti crei le stringhe, che poi unisci tutte insieme mettendo un "%20" nel mezzo

ardito86
03-03-2012, 23:24
Ecco trovata la funzione del .NET che fa per te: http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx

Rising1
04-03-2012, 18:20
Originariamente inviato da ardito86
Ecco trovata la funzione del .NET che fa per te: http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx

non capisco in realtà bene il funzionamento di tale funzione:
-basta passargli la stringa da cercare e lui te la codifica?
-basta passargli http://www.google.it/search?ie=UTF-8&q=stringa da cercare
e lui al posto degli spazi mette i %20?



ci sono, e se usassi questo:

http://www.cplusplus.com/reference/string/string/replace/

vediamo...

Loading