Delphi e Chrome

14/05/2012

0

Usando Delphi, posso preencher automaticamente alguns campos de uma página no Internet Explorer com uma função fácil de se encontrar na Web
(GetIEFromHWnd), onde se joga o documento da página em um TWebBrowser, gostaria de fazer o mesmo quando meu site estiver aberto no Google Chrome, segue abaixo código que uso com IExplorer:

Código:
IE : IWebBrowser2; 
... 
var 
   WndChild: hWnd; 
begin 
    WndChild := FindWindowEx(Wnd,0,Shell DocObject View,nil); 
    if WndChild <> 0 then 
    begin 
      WndChild := FindWindowEX(WndChild, 0, Internet Explorer_Server, nil); 
      if WndChild <> 0 then 
      begin 
        if GetIEFromHWnd(WndChild, IE) = S_OK then 
        begin 
          Caption := Pegou Página; 
        end; 
      end; 
    end; 
end; 


Função GetIEFromHWnd
Código:
function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT; 
var 
  hInst: HWND; 
  lRes: Cardinal; 
  Msg: Integer; 
  pDoc: IHTMLDocument2; 
  ObjectFromLresult: TObjectFromLresult; 
begin 
  hInst := LoadLibrary(Oleacc.dll); 
  @ObjectFromLresult := GetProcAddress(hInst, ObjectFromLresult); 
  if @ObjectFromLresult <> nil then 
  begin 
    try 
      Msg := RegisterWindowMessage(WM_HTML_GETOBJECT); 
      SendMessageTimeOut(WHandle, Msg, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes); 
      Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc); 
      if Result = S_OK then 
        (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE); 
    finally 
      FreeLibrary(hInst); 
    end; 
  end; 
end; 


A partir daí fica simples preencher alguns campos automaticamente:
Código:
var 
  doc: IHTMLDocument2; 
  ele: IHTMLElement; 
  i : Integer; 
  all: IHTMLElementCollection; 
begin 
      doc := IE.Document as IHTMLDocument2; 
      all := doc.all; 
      for i := 0 to all.length - 1 do 
      begin 
        application.ProcessMessages; 
        ele := all.item(i, 0) as IHTMLElement; 
        if (Assigned(ele)) and (LowerCase(ele.id) = email) then 
          edU.Text := ele.setAttribute(value,meulogin,0) 
        else if (Assigned(ele)) and (LowerCase(ele.id) = senha) then 
          edS.Text := ele.setAttribute(value,minhasenha,0); 
      end; 
end;
Erique Costa

Erique Costa

Responder

Posts

05/09/2017

Daniel Thomaz

amigo conseguiu resolver o seu problemas estou passando pelo mesmo problema.
Responder

06/09/2017

Tone Costa.

talvez esse link te ajude

https://delphimaniaco.wordpress.com/2016/03/15/utilizando-o-navegador-chrome-no-delphi/
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar