Можно ли подключить событие загрузки файла программы? - PullRequest
0 голосов
/ 27 июня 2010

Скажите, пожалуйста, можно ли узнать, когда программа пытается загрузить файл (как в Internet Download Manager).Я хочу поймать это событие (перехватить его), получить URL-адрес загрузки, а затем уничтожить событие.
Заранее спасибо ..

@ Джерри Коффин: Sr, я забыл сказать вам, что эта функцияIDM не активен по умолчанию.Он включается только при включении опции «Использовать расширенную интеграцию с браузером» в «Загрузить / Параметры» меню IDM.Как здесь:
http://files.myopera.com/UenX/files/Detect.jpg
+ Проверьте опции (1), ОК, затем перезагрузите компьютер.
+ После перезагрузки появится опция (2), проверьте ее, ОК и запустите программное обеспечение.,Вы должны увидеть что-то вроде (3) (это появляется, когда я запускаю msgr9us.exe (установочный файл Yahoo! Messenger)) Попробуйте ...

Ответы [ 3 ]

0 голосов
/ 28 июня 2010

вы можете подключить сетевой поток и фильтровать запросы на загрузку http.


вам понадобится библиотека для захвата сетевого трафика (например, http://en.wikipedia.org/wiki/Pcap). Затем вам придется анализировать сетевые пакеты на предмет соответствующих HTTP-сообщений (извините, я не могу вам их дать, я их не знаю). Я не знаю, можете ли вы на самом деле предотвратить отправку пакетов.


Другим (более простым) способом было бы внедрить прокси-сервер (или изменить существующий), чтобы делать то, что вы хотите. Тогда вам просто нужно подключить IE к вашему прокси, используя настройки прокси-сервера. Проверьте, например, Privoxy , который уже выполняет некоторую фильтрацию.

0 голосов
/ 28 июня 2010

Не совсем.Рассмотрим, как браузер обычно загружает файл: он открывает соединение через сокет TCP с удаленным сервером через порт 23 или 80 и использует протокол FTP или HTTP для этого соединения.Эти вещи вы можете обнаружить, перехватить и изменить с высокой надежностью.Но есть и другие программы, которые используют другие методы.например, программы обмена файлами P2P, такие как BitTorrent, не используют HTTP или FTP, а также не загружают файл с одного сервера.

Итак, хотя вам не нужно понимать каждую программу, вы должны иметь возможность обнаруживать и понимать каждый протокол загрузки файлов.

0 голосов
/ 27 июня 2010

Для конкретной программы, такой как Internet Explorer, это вполне разумно (IE включает в себя хуки для вызова вашего кода при правильных обстоятельствах). Однако для большинства программ это невозможно - они просто не генерируют никакого «события», которое вы можете перехватить и «уничтожить».

Короче говоря, для того, чтобы с этим справиться, вам почти наверняка потребуется справиться с ситуацией на индивидуальной основе, написать код, специфичный для каждого приложения, с которым вы хотите иметь дело - и знать что любое другое приложение и даже более новые версии приложений, с которыми вы работали, вероятно, сломают то, что вы пытаетесь сделать.

...