Duvida WebBrowser com vetor delphi 7
Tenho um vetor de 50 posições do tipo string que armazenam links de sites, gostaria de saber como faço pra fazer com que a cada 5 segundos o Webbrowser entre em cada site que está em cada posição do vetor, sendo que eu ja consegui implementar o código pra o Webbrowser acessar ao menos 1 posição do vetor, só está faltando pra conseguir acessar todas posições uma após a outra a cada 5 segundos. Obrigado.
Alex
Curtidas 0
Respostas
Mateus Ribeiro
29/10/2015
Bom dia!
Veja se é isso.
Veja se é isso.
var i: integer;
begin
for i:= 0 to Length(SeuVetor) do
begin
WebBrowser.Navigate(SeuVetor[i]);
Sleep(5000); // Aguarda 5 segundos
end;
GOSTEI 0
Alex
29/10/2015
Bom dia, fiz os passos acima citado, mas o webbrowser so carrega o link da ultima posição do vetor, ou seja apenas a posição 50, as demais o link não é carregado
GOSTEI 0
Mateus Ribeiro
29/10/2015
Bom... do jeito que passei, todos os sites no seu vetor são acessados, porém ele não aguarda o carregamento da página de nenhum, ai fica indo para o próximo sem parar. O ideal é vc acessar uma pagina, esperar o carregamento dela e então aguardar 5 segundos para a próxima do vetor. Se for assim, segue o método.
Declare as variáveis globais:
Agora, nos eventos do seu WebBrowser coloque...
No evento OnBeforeNavigate:
No evento OnDocumentComplete:
No evento OnNavigateComplete2:
Agora, seguindo o código que passei anteriormente, fica assim:
Espero que ajude! Poste qualquer dificuldade
Declare as variáveis globais:
var Form1: TForm1; CurDispatch: IDispatch; FDocLoaded: Boolean; implementation
Agora, nos eventos do seu WebBrowser coloque...
No evento OnBeforeNavigate:
CurDispatch := nil; FDocLoaded := False;
No evento OnDocumentComplete:
if (pDisp = CurDispatch) then
begin
FDocLoaded := True;
CurDispatch := nil;
end;
No evento OnNavigateComplete2:
if CurDispatch = nil then
CurDispatch := pDisp;
Agora, seguindo o código que passei anteriormente, fica assim:
var i: integer;
begin
for i:= 0 to Length(SeuVetor) do
begin
WebBrowser.Navigate(SeuVetor[i]);
repeat Application.ProcessMessages until FDocLoaded; //Depois de acessar a página, espera ela carregar
Sleep(5000); // Aguarda 5 segundos
end;
Espero que ajude! Poste qualquer dificuldade
GOSTEI 0
Alex
29/10/2015
Obrigado mano, resolveu aqui, era exatamente isso que eu queria... Mas aproveitando o embalo da conversa sem querer abusar é claro, deixa eu fazer uma pergunta rápida, Como eu faria pra fazer uma variavel pesquisar uma determinada frase(string) na página que abriu, antes que os 5 segundos termine?
Exemplo: tenho a variavel nome do tipo string; e ela guarda a frase ' você é bonito(a)' e dai essa variavel pesquisar essa string na página que abriu, antes que os 5 segundos termine, se ela achar o valor na página ela pausa o vetor, se não, ela continua procurando até o ultimo link do vetor...
Exemplo: tenho a variavel nome do tipo string; e ela guarda a frase ' você é bonito(a)' e dai essa variavel pesquisar essa string na página que abriu, antes que os 5 segundos termine, se ela achar o valor na página ela pausa o vetor, se não, ela continua procurando até o ultimo link do vetor...
GOSTEI 0
Mateus Ribeiro
29/10/2015
Entendi, é bastante simples fazer isso que vc quer amigo... o método que me veio a cabeça é obter o HTML do navegador e verificar se essa palavra existe lá!
Basicamente isso:
Declare essa função:
Depois, implementando na função que eu tinha te passado antes:
Basicamente isso:
Declare essa função:
function GetWebBrowserHTML(const WebBrowser: TWebBrowser): String;
var
LStream: TStringStream;
Stream : IStream;
LPersistStreamInit : IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then exit;
LStream := TStringStream.Create('');
try
LPersistStreamInit := WebBrowser.Document as IPersistStreamInit;
Stream := TStreamAdapter.Create(LStream,soReference);
LPersistStreamInit.Save(Stream,true);
result := LStream.DataString;
finally
LStream.Free();
end;
end;
Depois, implementando na função que eu tinha te passado antes:
var i: integer;
Nome, xHTML: String;
begin
Nome:= 'Você é bonito(a)';
for i:= 0 to Length(SeuVetor) do
begin
WebBrowser.Navigate(SeuVetor[i]);
repeat Application.ProcessMessages until FDocLoaded; //Depois de acessar a página, espera ela carregar
xHTML:= GetWebBrowserHTML(WebBrowser1); // Obtendo o código HTML da página atual
if Pos(Nome, xHTML)<> 0 then // Verifica se no HTML existe o valor da variável NOME
Break; // Se existir, para o contador e permanece na página
Sleep(5000); // Aguarda 5 segundos
end;
GOSTEI 0
Alex
29/10/2015
Obrigado amigo, sanou minhas dúvidas... tenha uma boa tarde...
GOSTEI 0