Mensagens do Sistema, Hooks, enfim tratar downloads

06/04/2006

0

Olá, acabo de fazer e cadastro e primeiramente gostaria de dizer que pelos tópicos que li este forum tem um nivel muito bom.

Vamos a minha primeira pergunta.
Preciso fazer que minha aplicação delphi se comunique com o IExplore (apenas por enquanto) como se fosse um gerenciador de downloads. Eu fiz um programa pra fazer o download, fiz as rotinas pra rodar no sistray, mas preciso descobrir como interceptar os downloads quando o usuario clicar no link no navegador.
Alguem jah fez isso, e pode me ajudar? Mensagens do sistema, Hooks o que usar? (tah dificil achar material sobre hook, baixei agora o madCollection e vou estuda-lo) Como descobrir qual mensagem o sistema envia no momento do clique? Usei o Winsight, mas nao achei a bendita kkk... e tambem ele tah travando direto. [url]www.magnun.cjb.net[/url] tem arquivo log.doc que eu fiz quando cliquei no baixaki pra baixar o abobe 7 quem quizer olhar e me dizer qual é a mesagem agradeço ...
Obrigado a todos...


M@gnun

M@gnun

Responder

Posts

07/04/2006

Kroki

Um meio bem simples(pelo IE) é vc bloquear os Downloads Pelas opções da intenet e de pois renomear o arquivo INETCPL.CPL ou renomear a extensão,assim não será possível liberar os downloads normalmente pelas opções.


Responder

07/04/2006

M@gnun

valeu pela resposta kroki, mas bloquear os downloads é facil, tem a sua opção e por proxy tambem, desculpe foi eu que não coloquei a pergunta inteira ... preciso interceptar o download e pegar a sua url. Ai eu vou tratar essa url com condições pre-determinadas pelo cliente. Por isso que tem que ser pelo delphi ... valeu.


Responder

07/04/2006

Kroki

Posso te passar um meio simples de vc ver todas urls em que o mouse se foca numa janela do IE e então vc verifica a extensão do arquivo pra verificar se é uma URL de download ou não,o resto vc faz porque não disse oque tem em mãos..
Usando um Timer e ListBox que podem ser substituidos.

function CapturaStatusbar (Handle: THandle; List: TStringList): boolean; stdcall;
var
hWndIE, hWndIEChild : HWND;
Buffer : array[0..255] of Char;
begin
SendMessage(Handle, WM_GETTEXT, 255, integer(@Buffer[0]));
hWndIE := FindWindow(PCHar(´IEFrame´), Buffer);
if hWndIE > 0 then
begin
hWndIEChild := FindWindowEx(hWndIE, 0, ´msctls_statusbar32´, nil);
if hWndIEChild > 0 then
begin
SendMessage(hWndIEChild, WM_GETTEXT, 255, integer(@Buffer));
List.AddObject(Buffer,TObject(hWndIE));
end;
end;
Result :=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
Handle: THandle;
begin
HWNDIE:=FindWindow(PCHar(´IEFrame´),nil);
if HWNDIE>0 then begin
ListBox1.Clear;
EnumWindows(@GetUrlFromIE, LParam(ListBox1.Items));
end;
end;
A criatividade é sua com o resto,espero ter contribuido.


Responder

07/04/2006

M@gnun

Contribuiu e muito, obrigado, mas a proposito ... sempre o statusbar do navegador te a url completa? pergunto isso pq nos testes que fiz com o winsight vi q depois do lbuttondown, a url é passada para o caption da janela que se abre para download, mas logo é subistituido por ´Donload de arquivo ...´, e nesse caption, as vezez a url sai cortada:
http://ardownload.adobe.com/pub/adobe/reader/win/7x/7.0.5/ptb/AdbeRdr705_DLM_ptb_full.exe

acima eh a url certa e abaixo eh como saiu, lembro, de acordo com o Winshgt

http://ardownload.adobe.com/pub/adobe/reader/win/7x/7.0.5/ptb/AdbeRdr705_DL

vou testar a dica e tentar colocar um tratamento para o lbuttondown do mouse depois posto o resultado. Obrigado


Responder

07/04/2006

M@gnun

funcionou ...

agora fiz uma rotina pra saber se o mouse é precionado

procedure TPrincipal.WndProc(var Msg: TMessage);
var
P: TPoint;
begin

case Msg.Msg of
WM_LBUTTONDOWN:
//faça alguma coisa;
end;
inherited;
end;

porem ela intercepta o clique, entao o evento que ia ser disparado nao acontece, como saber se o mouse foi clicado e continuar o que devia ser feito.
tambem só funciona com a janela do programa, como fazer um tratamento global

valeu.


Responder

07/04/2006

M@gnun

funcionou ...

agora fiz uma rotina pra saber se o mouse é precionado

procedure TPrincipal.WndProc(var Msg: TMessage);
var
P: TPoint;
begin

case Msg.Msg of
WM_LBUTTONDOWN:
//faça alguma coisa;
end;
inherited;
end;

porem ela intercepta o clique, entao o evento que ia ser disparado nao acontece, como saber se o mouse foi clicado e continuar o que devia ser feito.
tambem só funciona com a janela do programa, como fazer um tratamento global

valeu.


Responder

09/04/2006

Nadilson

Eu posso! Você precisa criar um BHO (Broser Helper Object), que é uma dll tipicamente COM (Component Object Model). De qualquer modo, isto é programação avançada e requer muito treino...

Envie-me um e-mail e eu lhe enviarei um pequeno exemplo de como interceptar downloads pelo MS-IE.

Atenciosamente,

Nadilson.


Responder

09/04/2006

Nadilson

Esqueci de citar meu e-mail: nadilson@click21.com.br


Responder

07/04/2014

Michel Marques

Olá...
Poderiam enviar para mim também?
Seria bom que eu pudesse interceptar os downloads.
Pois tenho um sistema que interage com o IE, efetuando preenchimentos e cliques. E num determinado ponto ele faz um download e eu tenho que ficar procurando a janela de download para mudar o caminho e nome do arquivo e clicar em salvar.
A interceptação do download e download me ajudariam bastante.

michel.marques.me@gmail.com

Obrigado
Responder

27/05/2014

Nelson Santos

Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar