PDA

View Full Version : [Visual Basic] Acquisire parte di un link con visual basic


bozzato
06-01-2011, 20:39
Salve a tutti,
sono qua per farvi una domanda dato che non riesco a venirne fuori.
Ho fatto un programma con due form: nel primo c'è la parte browser e nel secondo form il programma vero e proprio.
Nel form2 ho fatto dei pulsanti, che se premuti mi inviano a un'altro link. Questo funziona, ma vorrei che, quando uso la parte browser, vorrei che il programma mi copiasse una parte di link.
Ecco un'esempio (inventato).

Dalla parte browser (form1) vado a finire qua:
www.google.it/gmail/codiceutente3456.html

Vorrei che il programma mi prendesse il codice utente 3456 e lo copiasse, mettendolo da qualche parte ad esempi osul source:
userid=3456

Questo in modo da poter fare un pulsante con il collegamento rapido alle email dell'utente 3456, mettendo un codice tipo:
Form1.WebBrowser1.Navigate ("www.google.it/gmail/codiceutenteUSERID")

Io vorrei che questo sia soggettivo, ovvero so che potrei scriveer direttamente il link normale, ma siccome il programma non lo userò solo io ma anche altri, allora il codice cambia ogni volta.
Se mi sono spiegato male ditemelo;)

Grazie come sempre:)

bozzato
07-01-2011, 20:56
qualche aiutino?

MarcoGG
08-01-2011, 09:13
Non è molto corretto come approccio al problema.

Se è previsto che più utenti siano "autorizzati" ad accedere al sito attraverso una finestra dell'applicazione, ciascuno con la propria userid, bisognerebbe anzitutto averne una lista.
Il resto è semplice, basta concatenare 3 stringhe componenti il link, di volta in volta con la userid desiderata :

Dim radiceUrl As String = "www.google.it/gmail/codiceutente"
Dim userid As String = "3456"
Dim htm As String = ".html"

WebBrowser1.Navigate(radiceUrl & userid & htm)

bozzato
09-01-2011, 13:20
Grazie MarcoGG ma purtroppo non mi sono spiegato bene.
Io non so il codice utente, perchè ogni volta che una persona si connette cambia, e non so quelli di ogni persona.
Quindi vorrei che appena la persone X si connettesse, il programma copiasse la parte finale del link e la mettesse ad esempio così:
userid = codicelink

Il problema è che non so come far copiare in modo temporaneo l'ultima parte del link.
grazie:)

bozzato
11-01-2011, 16:37
un'aiutino?:D

MarcoGG
13-01-2011, 09:44
Se i link sono formattati sempre in quel modo, quale che sia la loro lunghezza e il numero di caratteri numerici dell'userid da estrarre, puoi usare una routine simile a questa :

Dim link As String = "www.google.it/gmail/codiceutente3456.html"
'oppure dalla textbox : Dim link As String = TextBox1.Text

Dim userid As String
Dim ultimoChr As Integer = 0
Dim primoChr As Integer = 0
For i As Integer = link.Length - 1 To 0 Step -1
If Char.IsNumber(link(i)) = True And ultimoChr = 0 Then ultimoChr = i
If Char.IsNumber(link(i)) = False And ultimoChr > 0 Then
primoChr = i + 1
Exit For
End If
Next
userid = link.Substring(primoChr, ultimoChr - primoChr + 1)
MsgBox(userid)

Prova... ;)

bozzato
19-01-2011, 17:58
grazie per la risposta ma...in alcune frasi mi segna alcuni errori....
il link dove viene salvato?
Ad esempio, c'è un comando del tipo:

codice=Form1.webbrowser1.link?
Grazie

MarcoGG
19-01-2011, 19:13
grazie per la risposta ma...in alcune frasi mi segna alcuni errori....
il link dove viene salvato?
Ad esempio, c'è un comando del tipo:

codice=Form1.webbrowser1.link?
Grazie

Il link viene salvato nella stringa :
Dim userid As String

Hai fatto un esempio preciso, e questo codice risolve, comunque posta le "frasi" in cui va in errore.

Scusa, ma prima di divenire l'url del controllo webbrowser, quella stringa link verrà messa a mano da qualcuno, no ? Sennò come fa l'utente a usare la tua applicazione ?! :mbe:

bozzato
21-01-2011, 18:19
grazieeeeee

Insieme all'aiuto di un mio amico funziona:D :D :D

Ora ho un'altra domandina.....
Come faccio a visualizzare il sorgente pagina?
Vorrei una cosa di questo genere:
command1->apre form2
->in una label/textbox visualizza la sorgente pagina del form1.webbrowser1


Grazie:D

MarcoGG
23-01-2011, 20:23
Se per "sorgente pagina" intendi il codice HTML del Document attualmente caricato ( e a caricamento completato ) nel WebBrowser, semplicemente lo puoi ricavare con la proprietà "DocumentText" :

WebBrowser1.DocumentText

bozzato
05-02-2011, 12:04
Così facile?:D
Grazie...

Ora ho un'altra domanda:
Dal codice HTML, posso copiarne una parte?
Per esempio, vorrei una cosa che mi copiasse un numero definito di lettere dopo una parte di codice, da me indicato, per esempio:

</html>
<title>Ciao a tutti-abcd</title>
</html>


Vorrei che visual basic mi copiasse le lettere abcd dopo le lettere ciao a tutti- in una cosa del tipo:

let=lettere dopo ciao a tutti-

Per poi fare una cosa del tipo:

Text1.text=let



Grazie MarcoGG,:) come sempre

bozzato
11-02-2011, 15:25
un'aiutino?:)

bozzato
15-02-2011, 19:59
un piccolo aiuto?:)

bozzato
18-02-2011, 17:58
Upupupuppupupupupu:D

Qualcuno sa aiutarmi? :D

bozzato
08-03-2011, 21:29
non mi dimentico di questo 3d:cry:

Tesinevb
09-03-2011, 06:38
Così facile?:D
Grazie...

Ora ho un'altra domanda:
Dal codice HTML, posso copiarne una parte?
Per esempio, vorrei una cosa che mi copiasse un numero definito di lettere dopo una parte di codice, da me indicato, per esempio:

</html>
<title>Ciao a tutti-abcd</title>
</html>


Vorrei che visual basic mi copiasse le lettere abcd dopo le lettere ciao a tutti- in una cosa del tipo:

let=lettere dopo ciao a tutti-

Per poi fare una cosa del tipo:

Text1.text=let



Grazie MarcoGG,:) come sempre

devi usare l'istruzioni mid e len vattela a vedere e poi tagli dove vuoi una qualunque frase, dopodichè incolli come ti pare le stringhe...

ti faccio un esempio:

a$="linkdelmiosito"
b=len(a$)

c$=mid(a$,b,3)
'oppure
c$=mid(a$,3,7)

d$="let"+c$
print d$

prova questo piccolo codice e prova a cambiare i valori 3 e 7

vedrai che imparerai a farlo da solo

ciao

MarcoGG
09-03-2011, 13:38
Dal codice HTML, posso copiarne una parte?
Per esempio, vorrei una cosa che mi copiasse un numero definito di lettere dopo una parte di codice, da me indicato, per esempio:

</html>
<title>Ciao a tutti-abcd</title>
</html>


Vorrei che visual basic mi copiasse le lettere abcd dopo le lettere ciao a tutti- in una cosa del tipo:

let=lettere dopo ciao a tutti-

Per poi fare una cosa del tipo:

Text1.text=let


1. Puoi ricavare direttamente il TITLE di un doc. HTML, senza passare dal DocumentText ( sorgente HTML ), semplicemente con Document.Title.

2. In VB.NET puoi usare Mid() o Right(), ma sono Funzioni statiche VB6. Un loro utilizzo non è da .NET.
In .NET si usa Substring sull'Oggetto stringa.
E ovviamente nessun bisogno dei caratteri dollaro $ ( che è solo ciarpame ereditato da versioni pre-VB6, e di nessuna utilità in .NET ).

Perciò :

Dim htmlTitle As String = WebBrowser1.Document.Title
Dim lettere As String = htmlTitle.Substring(htmlTitle.Length - 4)
TextBox1.Text = lettere

Dove 4 è il numero dei caratteri presi da destra che ci si aspetta di estrarre.

:)

bozzato
14-05-2011, 11:38
devi usare l'istruzioni mid e len vattela a vedere e poi tagli dove vuoi una qualunque frase, dopodichè incolli come ti pare le stringhe...

ti faccio un esempio:

a$="linkdelmiosito"
b=len(a$)

c$=mid(a$,b,3)
'oppure
c$=mid(a$,3,7)

d$="let"+c$
print d$

prova questo piccolo codice e prova a cambiare i valori 3 e 7

vedrai che imparerai a farlo da solo

ciao

ciao e grazie
Una sola domanda.....a cosa si riferiscono i valori 3 e 7?
Grazie:D

Tesinevb
14-05-2011, 23:42
ciao e grazie
Una sola domanda.....a cosa si riferiscono i valori 3 e 7?
Grazie:D

se non erro (non programmo più)
3 uguale a "n" e 7 uguale a "o"

quindi "nkdelmio"

bye bye...