Fórum Enviar tecla para um componente especifico #344858
22/08/2007
0
gostaria de saber como fazer pra fazer uma rolagem automatica de um TWebBrowser. Estou usando um TTimer, e quero que ele vá descendo o texto periodicamente. Nao achei nenhuma função do componente que faça isso.
Então tentei da seguinte forma:
WebBrowser1.SetFocus; keybd_event(40,0,0,0);
Mas o SetFocus nao funciona, ele so desce o texto se eu clicar no WebBrowser para ele pegar o foco.
Não teria um jeito melhor? Talvez uma função expecifica do componente, ou um jeito de eu colocar o foco no webbrowser antes de enviar a tecla, ja que o .SetFocus não funciona.
Agradeço desde ja
Victor
Kohl
Curtir tópico
+ 0Posts
22/08/2007
Marcosrocha
O código é um tanto complicado porque eu uso FindWindow para fazer isso...
Mas você consegue encontrar na net artigos e dicas sobre ´como pegar texto do Bloco de Notas´... se não conseguir encontrar me avise que eu procuro a rotina no meu arquivo morto... :D
Gostei + 0
22/08/2007
Kohl
var myHandle : THandle; begin myHandle:= FindWindow( ´MyAppClass´, ´MyAppCaption´); if myHandle <> 0 then PostMessage( myHandle, WM_KeyDown, VK_DOWN, 0 ); end;
Mas o problema eh que não eh outra aplicação, eh para o componente que esta no meu form. Eu vi que a função FindWindow retorna HWND, entao tentei fazer essa ´gambiarra´:
PostMessage( WebBrowser1.HWND, WM_KeyDown, VK_DOWN, 0 );
Mas nao funcionou.
Se tiver como postar o codigo que você tem, ou se alguem mais tem uma solução agradeço muito.
Gostei + 0
23/08/2007
Marcosrocha
var myHandle : THandle; begin myHandle:= FindWindow(´TApplication´, ´MeuPrograma´); if myHandle <> 0 then begin myHandle := FindWindow(´TForm´, ´Form Navegador´); if myHandle <> 0 then begin myHandle := FindWindow(´TWebBrowser´, ´WebBrowser1´); if myHandle <> 0 then PostMessage( myHandle, WM_KeyDown, VK_DOWN, 0 ); end; end; end;
Gostei + 0
23/08/2007
Kohl
Me parece que não tem como, porque o WebBrowser tem um propriedade .HWND que retorna o seu Handle, mas nao funciona com o keybd_event. Já que ele tem um metodo, então eu tenho como conseguir o seu HWND. O FindWindow nao retornaria esse mesmo valor?
De qualquer forma nao consegui fazer funcionar ele.
Se tiver mais algo pra ajudar agradeço muito, no mais muito obrigado pela ajuda. Vou ver ainda se consigo, mas sem muitas esperanças.
Gostei + 0
23/08/2007
Emerson Nascimento
SendMessage(WebBrowser1.Handle, WM_VSCROLL, 1, 0); // pra descer
SendMessage(WebBrowser1.Handle, WM_VSCROLL, 0, 0); // pra subir
Gostei + 0
23/08/2007
Kohl
sera que existe algum componente bom e gratuito para visualizacao de paginas html com css?
obrigado
Gostei + 0
23/08/2007
Marcosrocha
Gostei + 0
23/08/2007
Kohl
Encontrei na internet esse codigo
uses ActiveX; -------------------- with WebBrowser1 do if Document <> nil then with Application as IOleobject do DoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect);
Com ele, consigo ajustar o foco do documento html em si, nao do componente e enfim funcionou.
Muito obrigado a todos que ajudaram
Sem mais
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)