Lukas S. Posted June 3, 2012 at 12:32 AM Report #459945 Posted June 3, 2012 at 12:32 AM (edited) Preciso qe o webbrowser esteja carregado para que eu possa fazer uma acção mas pelos vistos o vb não está a fazer lá muito bem este ciclo If WebBrowser1.Url.ToString = TextBox2.Text Then If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then WebBrowser1.Navigate(TextBox2.Text) entrar() End If Else WebBrowser1.Navigate(TextBox2.Text) End If Alguém explica-me o q está mal aqui ? é q ele mesmo q a página não esteje completamente carregada ele avança Ps: Com breakpoint já funciona lol xD alguém sabe o porque ? Edited June 3, 2012 at 12:34 AM by Lukas S. E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.
bsccara Posted June 3, 2012 at 01:07 AM Report #459946 Posted June 3, 2012 at 01:07 AM Qual ciclo ? Tens duas estruturas condicionais no código. A terceira linha passa o URL que estiver na TextBox2 e manda carregar a página, provavelmente asincronamente e avança logo para a função entrar(). Se meteres um breakpoint na chamada da função entrar() darás tempo para o objecto WebBrowser acabar de carregar a página. Podes usar a propriedade IsBusy para determinar quando o objecto WebBrowser acabou de carregar a página, mas muito melhor seria responderes ao evento DocumentCompleted. 1 Report
Lukas S. Posted June 3, 2012 at 01:24 AM Author Report #459951 Posted June 3, 2012 at 01:24 AM Obrigado amigo foi isso mesmo que eu fiz ... já que tamos aqui eu tenho vários itens numa listbox e queria q ele repetisse isso até essa lista acabar eu pus assim mas nao deu lá grande coisa if not ListBox1.SelectedIndex = ListBox1.Items.Count -1 then repetir a instruçao End if Ele neste ciclo nao devia fazer isto até q o selectedindex fosse igual ao items.count-1 ( uma vez que o count começa em um e o selectedindex começa em zero ?)? E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.
bsccara Posted June 3, 2012 at 02:13 AM Report #459954 Posted June 3, 2012 at 02:13 AM O que tens aí não é um ciclo; é uma estrutura condicional. Se a expressão que está entre o 'if' e o 'then' fôr verdadeira o 'repetir a instrução' será executado, caso contrário seguirá para bingo... O que queres é o while ... end while.
Lukas S. Posted June 3, 2012 at 03:27 AM Author Report #459956 Posted June 3, 2012 at 03:27 AM (edited) o While nao funcionou ... Tentei também este Dim s as string for each s in Listbox1.Items Procedimento() Next --------------''-- sem exito-----"----------- do until Listbox1.Items.Count -1 = 0 Procedimetno (colocando em procedimento ListBox1.Items.Remove(ListBox1.SelectedItem) ) loop -------------"- sem exito "-------------- Erro apresentado:A lista à qual este enumerador está vinculado foi modificada. Um enumerador só pode ser utilizado se a lista não for alterada. Código: Dim myItem As Object For Each myItem In ListBox1.Items Procedimento() Next Mais alguém ? Em procedimento tenho isto mais ou menos ListBox1.SelectedIndex = 0 login() fix.start() preciso de fazer isso por cada item Edited June 3, 2012 at 09:32 AM by Lukas S. E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.
bsccara Posted June 3, 2012 at 02:52 PM Report #460002 Posted June 3, 2012 at 02:52 PM Estás a alterar a propriedade ListBox1.Items ? Se estás tens de voltar ao primeiro índice de cada vez que alterares a Items. dim index as Integer while index < Listbox1.Items.Count if VouAlterarAItems then Alterar index = 0 else index = index + 1 end if end while
Lukas S. Posted June 3, 2012 at 05:32 PM Author Report #460034 Posted June 3, 2012 at 05:32 PM (edited) Estás a alterar a propriedade ListBox1.Items ? Se estás tens de voltar ao primeiro índice de cada vez que alterares a Items. dim index as Integer while index < Listbox1.Items.Count if VouAlterarAItems then Alterar index = 0 else index = index + 1 end if end while Desculpa a ignorancia mas quando meteste ali VoualterarAitems o que querias referir? e quando dizes editar tás a referir ao que ? e a função alterar o que faz? eu na função procedimento estou a eliminar o primeiro item da listbox1 Edited June 3, 2012 at 05:35 PM by Lukas S. E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.
bsccara Posted June 3, 2012 at 06:49 PM Report #460052 Posted June 3, 2012 at 06:49 PM Aquelas duas palavras são para substituir pelo código real; a VouAlterarAItems seria uma função para indicar se a Items deveria ser alterada de alguma forma e a Alterar faria a alteração (o 'index = 0' depende do que efectivamente estiveres a fazer à Items, pode ser retirado na maioria dos casos). Se estás a usar para qualquer coisa e depois eliminar o primeiro item da Items podes fazer antes assim: while ListBox1.Items.Count > 0 ' Poe aqui o código para usar o Items[0] ListBox1.Items.RemoveAt(0) end while
Lukas S. Posted June 3, 2012 at 06:58 PM Author Report #460053 Posted June 3, 2012 at 06:58 PM (edited) Aquelas duas palavras são para substituir pelo código real; a VouAlterarAItems seria uma função para indicar se a Items deveria ser alterada de alguma forma e a Alterar faria a alteração (o 'index = 0' depende do que efectivamente estiveres a fazer à Items, pode ser retirado na maioria dos casos). Se estás a usar para qualquer coisa e depois eliminar o primeiro item da Items podes fazer antes assim: while ListBox1.Items.Count > 0 ' Poe aqui o código para usar o Items[0] ListBox1.Items.RemoveAt(0) end while Não sei como é possivel mas o teu código limpou-me a lista inteira e só fez com o primeiro da lista Edited June 3, 2012 at 06:59 PM by Lukas S. E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.
bsccara Posted June 3, 2012 at 07:34 PM Report #460069 Posted June 3, 2012 at 07:34 PM Não sei como é possivel mas o teu código limpou-me a lista inteira e só fez com o primeiro da lista O meu código é um ciclo que se repete enquanto houver elementos na Items. Dentro dele elimino o primeiro elemento da Items. Imagina que a Items tem três elementos: 1,2 e 3. Quando o ciclo é executado pela primeira vez o elemento 1 (1º da Items) é eliminado. A Items passa a ter dois elementos: 2 e 3. Na segunda execução elimino o 2 (que é agora o 1º da Items) e fica só o 3 na Items. Na terceira execução elimino o 3 e como o Items já não tem elementos (Items.Count = 0) o ciclo acaba. Se ainda não percebeste ou não é isto que queres fazer é melhor voltares ao princípio e explicares o que pretendes fazer.
Lukas S. Posted June 3, 2012 at 07:41 PM Author Report #460073 Posted June 3, 2012 at 07:41 PM bsscara vou te explicar mais ou menos o código ... eu tenho q esperar q o webbrowser faça tudo até ao logout e depois sim ele passa para o segundo elemento então eu fiz o seguinte adptando o teu código While ListBox1.Items.Count > 0 Procedimento() ListBox1.Items.RemoveAt(0) ListBox1.Update() fix.Start() System.Threading.Thread.Sleep(9000) End While O problema é q quando eu faço System.Threading.Thread.Sleep(9000) (que seria o tempo necessario para ele fazer o login num site e sair automaticamente ) ele nao faz o fix.start que é o delay q precisa para carregar a primeira página ( a do login) vê isto como se fosse no tweet basicamente ele tem q fazer é entrar , tweetar e sair o problema é q eu nao tou a dar tempo pra ele fazer isto mas eu já nem sei como fazer mais E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.
bsccara Posted June 4, 2012 at 03:13 AM Report #460168 Posted June 4, 2012 at 03:13 AM Queres fazer uma coisa assim mas percorrendo os sites indicados na ListBox1 ? Então a tua ideia é fazer login em cada site, fazer qualquer coisa lá e fazer logout, repetidamente ? Se é o caso, teres um tempo fixo para isso não vai funcionar. Basta o site estar lento para não funcionar. Provavelmente terás de usar o evento LocationChanged para detectar a mudança de URL ao passar da página do login para a normal e para a de logout e usar as técnicas da página que indiquei acima para navegar programaticamente dentro delas. Isto é capaz de não funcionar com alguns sites que usem cookies para a navegação. O mais garantido seria usares um sniffer como o Wireshark para estudares o tráfego entre o teu PC e o site para executar a operação que queres e depois duplicar isso com uma ligação através de socket.
Lukas S. Posted June 4, 2012 at 02:43 PM Author Report #460297 Posted June 4, 2012 at 02:43 PM (edited) na listbox está os users e a senha .... o site é só um ... o q ele faz é entrar com os dados na listbox para o site ... fazendo assim o log in Eu para saber se o site ta lento ou nao uso a propriedade ReadyState e uso um timer para ver de a cada 3 segundos se a página está complta Edited June 4, 2012 at 02:43 PM by Lukas S. E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now