Fórum Procedure com parâmetros insuficientes #429656

25/11/2012

0

Olá,

tenho a seguinte função >>


function GetActivePageUrlFromChrome(Handle: HWnd; Param: LParam): Bool; stdcall;
var
  List: TStrings;
  hWndChrome, hWndChromeChild: HWND;
  Buffer            : array[0..255] of Char;
begin
  List := TStrings(Param);
  //get the window caption
  SendMessage(Handle, WM_GETTEXT, Length(Buffer), integer(@Buffer[0]));
  //look for the chrome window with "Buffer" caption
  hWndChrome := FindWindow('Chrome_WidgetWin_0', Buffer);
  if hWndChrome <> 0 then
  begin
    hWndChromeChild := FindWindowEx(hWndChrome, 0, 'Chrome_AutocompleteEditView', nil);
    if hWndChromeChild <> 0 then
    begin
      SendMessage(hWndChromeChild, WM_GETTEXT, Length(Buffer), integer(@Buffer));
      List.Add(Buffer);
    end;
  end;
  Result := True;
end;


procedure TForm1.Button1Click(Sender: TObject);

var
  slChromeUrl      : TStringList;
begin
  slChromeUrl := TStringList.Create;
  try
    EnumWindows(GetActivePageUrlFromChrome, LParam(slChromeUrl));
    Memo1.Lines.AddStrings(slChromeUrl);
  finally
    FreeAndNil(slChromeUrl);
  end;
end;
end.


E o Delphi reclama na hora de compilar >>

[Error] Unit1.pas(58): Not enough actual parameters


Já mexi muito aqui mas não descobri onde está erro. Alguém aí poderia dá uma analisada e me informar onde está este pequeno erro?

Valeu galera!

FONTE : http://stackoverflow.com/questions/5222301/how-to-get-the-url-from-chrome-using-delphi
Luiz Eduardo

Luiz Eduardo

Responder

Posts

25/11/2012

Claudia Nogueira

Oie.
Você vai conseguir usar esse código se colocar o @ antes do GetActivePageUrlFromChrome trocando essa linha:

EnumWindows(GetActivePageUrlFromChrome, LParam(slChromeUrl));


Por essa:

EnumWindows(@GetActivePageUrlFromChrome, LParam(slChromeUrl));


Mas mesmo assim pode ser que não consiga pegar a URL do Chrome por que depende da versão do navegador ou ainda alguma outra coisa que eu desconheça.

Na minha máquina eu só consegui capturar a URL quando troquei isso:

[cose]Chrome_WidgetWin_0[/code]

Por isso:

[cose]Chrome_WidgetWin_1[/code]

E isso:

[cose]Chrome_AutocompleteEditView[/code]

Por isso:

[cose]Chrome_OmniboxView[/code]

Para obter o nome dessas classes eu usei uma função que tenho aqui e obtive Chrome_WidgetWin_1 para o navegador e Chrome_OmniboxView para o link.
Responder

Gostei + 0

25/11/2012

Claudia Nogueira

Vou responder novamente que eu digitei errado pra incluir o código:

Você vai conseguir usar esse código se colocar o @ antes do GetActivePageUrlFromChrome trocando essa linha:

EnumWindows(GetActivePageUrlFromChrome, LParam(slChromeUrl));


Por essa:

EnumWindows(@GetActivePageUrlFromChrome, LParam(slChromeUrl));


Mas mesmo assim pode ser que não consiga pegar a URL do Chrome por que depende da versão do navegador ou ainda alguma outra coisa que eu desconheça.

Na minha máquina eu só consegui capturar a URL quando troquei isso:

Chrome_WidgetWin_0


Por isso:

Chrome_WidgetWin_1


E isso:

Chrome_AutocompleteEditView


Por isso:

Chrome_OmniboxView


Para obter o nome dessas classes eu usei uma função que tenho aqui e obtive Chrome_WidgetWin_1 para o navegador e Chrome_OmniboxView para o link.

Responder

Gostei + 0

25/11/2012

Luiz Eduardo

Vou responder novamente que eu digitei errado pra incluir o código:

Você vai conseguir usar esse código se colocar o @ antes do GetActivePageUrlFromChrome trocando essa linha:

EnumWindows(GetActivePageUrlFromChrome, LParam(slChromeUrl));


Por essa:

EnumWindows(@GetActivePageUrlFromChrome, LParam(slChromeUrl));


Mas mesmo assim pode ser que não consiga pegar a URL do Chrome por que depende da versão do navegador ou ainda alguma outra coisa que eu desconheça.

Na minha máquina eu só consegui capturar a URL quando troquei isso:

Chrome_WidgetWin_0


Por isso:

Chrome_WidgetWin_1


E isso:

Chrome_AutocompleteEditView


Por isso:

Chrome_OmniboxView


Para obter o nome dessas classes eu usei uma função que tenho aqui e obtive Chrome_WidgetWin_1 para o navegador e Chrome_OmniboxView para o link.




Aê Claudia, brigadão valeu mesmo! deu certinho aqui! estou interessado nessa função que pega as classes do navegador que você tem aí, poderia disponibilizar aqui nesse tópico ou então indicar um site onde possa ter a mesma!?

Me diga uma coisa: Essa sua função funciona também para outros navegadores ou só mesmo pro Chrome?

Abraço
Responder

Gostei + 0

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

Aceitar