Um auto-início diferente

Delphi

01/12/2012


Olá,


queria saber se alguém sabe o code que faz aplicação iniciar ao detectar um site específico, por exemplo semelhante a como se inicia junto com o sistema.

Sempre tive essa curiosidade de saber isso. Por exemplo, ao entrar no site DevMedia, daí a aplicação inicia, e dá uma mensagem. Exemplo:

"Bem vindo ao site DevMedia!" ou então faz apenas a inicialização sem dá mensagem mesmo. E depois que sair do site, o software "pausa", e só retornando quando detectar o site pré definido no source do projeto.

Já procurei muito por essa informação, mas ainda não obtive resultado. Só encontro coisa que todos já sabem (fazer iniciar junto com o Windows) rsrs.

Alguém tem ideia de como faz ou conhece algum site/forum na net que explique isso?

valeu galera!
Luiz Eduardo

Luiz Eduardo

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

01/12/2012

Vejo da seguinte forma.
Como um software vai saber que algum usuário entrou em algum site sem pelo menos esse software estar rodando?
Tem que ser um serviço ou algo do tipo realmente iniciado com o sistema operacional.
Em Delphi você pode fazer uma aplicação que fica rodando invisível com um Timer capturando de segundo a segundo as URLs dos navegadores, e quando for detectado que a URL é do site especificado, aí sim o software fica visível e faz o que tem que fazer.
Essa é minha opinião, e não vejo como um aplicativo em Delphi fazer outro tipo de coisa nesse sentido que você quer, mas posso estar enganada.
Vamos ver a opinião do resto do pessoal.
GOSTEI 0
Luiz Eduardo

Luiz Eduardo

01/12/2012

Vejo da seguinte forma.
Como um software vai saber que algum usuário entrou em algum site sem pelo menos esse software estar rodando?
Tem que ser um serviço ou algo do tipo realmente iniciado com o sistema operacional.
Em Delphi você pode fazer uma aplicação que fica rodando invisível com um Timer capturando de segundo a segundo as URLs dos navegadores, e quando for detectado que a URL é do site especificado, aí sim o software fica visível e faz o que tem que fazer.
Essa é minha opinião, e não vejo como um aplicativo em Delphi fazer outro tipo de coisa nesse sentido que você quer, mas posso estar enganada.
Vamos ver a opinião do resto do pessoal.


Valeu Claudinha, também acho que não faz sentido esse negócio de iniciar ao capturar uma url, uma vez que não seja iniciado junto com o sistema. Você tem razão, mas para capturar a url, já tenho aquela solução do Google Chrome


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_1', Buffer);
  if hWndChrome <> 0 then
  begin
    hWndChromeChild := FindWindowEx(hWndChrome, 0, 'Chrome_OmniboxView', 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;


A segunda parte (a procedure do Button) eu transformei em uma Função: String; pra facilitar.
Daí como eu faria pra especificar a url no source do projeto?

Seria algo como um teste de condição tipo:


if(GetURLChrome) then
Application.Run;
end;


mas no caso acima acho que Application.Run não seria o correto, tendo em vista que a aplicação já se encontra iniciada junto com o sistema não é? não sei bem...

então seria melhor assim:
if(GetURLChrome) then
ShowMessage(bla bla bla bla);
end;


O que você acha? será que o exemplo de uso que citei acima daria certo?

valeu!
GOSTEI 0
POSTAR