Procedure com parâmetros insuficientes

Delphi

25/11/2012

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

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

25/11/2012

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.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

25/11/2012

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.

GOSTEI 0
Luiz Eduardo

Luiz Eduardo

25/11/2012

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
GOSTEI 0
POSTAR