небольшой вопрос по разработке
Moderators: Korney San, marcipan
небольшой вопрос по разработке
необходимо поймать добавляемый URL, изменить и добавить закачку с этим измененным URL, подскажите как можно это провернуть
покачто получилось
поймать EventRaised - dm_download_added
изменить
и добавить DoAction - AddingURL
но в результате стартуют 2 закачки
как заблокировать старт ненужной
покачто получилось
поймать EventRaised - dm_download_added
изменить
и добавить DoAction - AddingURL
но в результате стартуют 2 закачки
как заблокировать старт ненужной
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Ещё один наступающий на грабли...
У тебя два варианта:
1. При добавлении закачки нажимать кнопку "Закачать позже"
2. После добавления второй закачки давить первую через StopDownloads.
В любом случае первую закачку, если она не нужна, придётся удалять вручную.
У тебя два варианта:
1. При добавлении закачки нажимать кнопку "Закачать позже"
2. После добавления второй закачки давить первую через StopDownloads.
В любом случае первую закачку, если она не нужна, придётся удалять вручную.
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Предложение модераторам:
собрать в ветке форума "Плагины" все темы с похожими на этот вопросиками и слить в одну "Вопросы при разработке плагинов". Будет сходняк программеров.
собрать в ветке форума "Плагины" все темы с похожими на этот вопросиками и слить в одну "Вопросы при разработке плагинов". Будет сходняк программеров.
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
спасибо, StopDownloads помогло, осталось только удалить из листа
жалко что нельзя менять параметры закачки до ее добавления
жалко что нельзя менять параметры закачки до ее добавления
согласен, а первое сообщение что-то типа фака сделатьсобрать в ветке форума "Плагины" все темы с похожими на этот вопросиками и слить в одну "Вопросы при разработке плагинов". Будет сходняк программеров.
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Это если разработчики реализуют в интерфейсе событие типа dm_download_adding (окно "Добавить закачку" закрылось, закачка уже получила ID и прочие параметры (чтобы было что через GetDownloadInfoByID доставать ), но ещё не стала в очередь обработки) - у половины плагинов (точнее, у их авторов) головняк пропадёт и ссылки двоиться не будут.lpn_com wrote:жалко что нельзя менять параметры закачки до ее добавления
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
И вообще, чё за хр**ь? Это начинает доставать. Почему управлять закачками из вне по нормальному практически нельзя? РАЗРАБЫ сделайте нормальную командную строку, для того, чтобы было всё "от" и "до" надо от силы мин. 30. Что в ней есть сейчас? - ВКЛ. и ВЫКЛ., а где остальное? Кто сможет мне сказать? С помощью командной строки можно управлять откуда угодно и в любой момент, а главное - без особых усилий и обезьяну можно научить. Пчему одну и ту же управляющую команду из плагина можно послать, а командной строкой - нет?!
Сейчас есть такой полудохлый плагин (наверно разраб на него "забил" или у него больше "нет" времени), называется - IcqControl, по самой полной он не позволяет управлять закачкой потому, что DM не поддерживает некоторые возможности по управлению своими закачками из вне. Вдобавок в плагине совсем нет администрирования, за исключением смены владельца, а ведь плагин ОФИЦИАЛЬНЫЙ.
Korney San, выложите пожалуйста в первом своём посте данной темы полный список команд и их описания - для начинающих программеров это будет хорошей справкой.
Сейчас есть такой полудохлый плагин (наверно разраб на него "забил" или у него больше "нет" времени), называется - IcqControl, по самой полной он не позволяет управлять закачкой потому, что DM не поддерживает некоторые возможности по управлению своими закачками из вне. Вдобавок в плагине совсем нет администрирования, за исключением смены владельца, а ведь плагин ОФИЦИАЛЬНЫЙ.
Korney San, выложите пожалуйста в первом своём посте данной темы полный список команд и их описания - для начинающих программеров это будет хорошей справкой.
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Эээ а собственно, зачем?x2088 wrote:Korney San, выложите пожалуйста в первом своём посте данной темы полный список команд и их описания - для начинающих программеров это будет хорошей справкой.
Полный список команд (и что они могут дать) приведён в файле readme.txt, идущем в архиве с примером плагина. Лучше, чем там написано, я объяснить не смогу, потому что - не разработчик DM. Остальное - только собственными силами.
Я, например, уже во второй раз перекроил dmtest_pluginImpl.pas "для себя" и сделал шаблон формы настроек, а также вынес некоторые указанные в readme константы в отдельный модуль.
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Не стоит путать описание самой команды с описанием способов использования этой команды.x2088 wrote:Вопросы "Что", "Где", "Как" и "Куда" очень редко, но возникают, я подумал: "Раз они возникают, значит там расписано не всё",
Да, назвал, потому что:x2088 wrote:вы сами назвали lpn_com "Ещё одним, наступающим на грабли"
а) есть событие добавления закачки - по нему можно отследить нужную закачку
б) есть команда добавления новой закачки - с её помощью можно добавить НОВУЮ закачку с необходимыми параметрами
в) есть команда остановки закачки
г) НЕТ команды ИЗМЕНЕНИЯ параметров СУЩЕСТВУЮЩЕЙ закачки (грабли, про которые не раз говорилось в разных темах)
д) ЭКСПЕРИМЕНТАЛЬНЫМ путём (мной лично) было установлено, что если ДОБАВИТЬ закачку с УЖЕ ИМЕЮЩИМСЯ URL (= существующую), но с другими параметрами, то новые параметры заменят существующие
Используя б) и в), можно добавить новую закачку и остановить ненужную.
Используя д) и б), можно добавить в существующую закачку нужный URL как зеркало.
Что я и использую в плагине LinkPartRemover, вырезая из временной ссылки "лишние" части, а дальше DM по издыханию временной ссылки переходит на зеркало и качает себе дальше.
Но, пардон, КАК использовать имеющиеся команды, каждый соображает сам. Это уже не справка, это уже методология.
Я дописывал не справку, а исходный текст плагина, добавляя код, который мне каждый раз приходилось копировать при начале работы над новым плагином. Это две большие разницы.x2088 wrote:и сказали, что уже 2 раза дописывали эту справку для себя...
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
ОФФТОПИК:
Может я и плохо выражаю в данном направлении свои мысли, и у меня с вами разная логика, но в чём-то есть сходство, тем не менее ваш ответ частично (примерно 50/50) соотвестсвует моей задумке, поскольку в нём есть какие-то объяснения "что - куда и как это можно использовать". И вдальнейшем в этом форуме вопросов про это уже, скорей всего - не будет.
Может я и плохо выражаю в данном направлении свои мысли, и у меня с вами разная логика, но в чём-то есть сходство, тем не менее ваш ответ частично (примерно 50/50) соотвестсвует моей задумке, поскольку в нём есть какие-то объяснения "что - куда и как это можно использовать". И вдальнейшем в этом форуме вопросов про это уже, скорей всего - не будет.
нашел способ чтобы подменять URL, правда сделал на C++, но думаю тоже самое можно сделать и на Delphi, ибо никаких библиотек нестандартых не использовалось
суть метОды в подмене функции оконной процедуры (или как там она называется))
первое что делаем это ищем окно "Добавить закачку", оно создается сразу при запуске DM хоть его и не видно;
сохраняем указатель на оригинальную функцию обработки сообщений для этого окна и прописываем свою
а вот и сама оконная функция
перехватываем два сообщения, WM_SHOWWINDOW - чтобы сохранить хендлы на элементы управления, WM_COMMAND - для отлавливания нажатия кнопок
поиск хэндлов элементов реализован конечно таксе, но можно чтонибудь похитрее придумать
суть метОды в подмене функции оконной процедуры (или как там она называется))
первое что делаем это ищем окно "Добавить закачку", оно создается сразу при запуске DM хоть его и не видно;
сохраняем указатель на оригинальную функцию обработки сообщений для этого окна и прописываем свою
Code: Select all
HWND MainWindow=FindWindow("TFileInfoForm",0);
WNDPROC OriginalWinProc=(WNDPROC)GetWindowLong(MainWindow,GWL_WNDPROC);
SetWindowLong(MainWindow,GWL_WNDPROC,(LONG)MyWinProc);
перехватываем два сообщения, WM_SHOWWINDOW - чтобы сохранить хендлы на элементы управления, WM_COMMAND - для отлавливания нажатия кнопок
Code: Select all
LRESULT CALLBACK MyWinProc(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
static HWND Link_Combo=0; // окошко с URL
static HWND BeginButton=0; // Кнопка "Начать закачку"
static HWND LaterButton=0; // Кнопка "Закачать позже"
switch(Msg)
{
case WM_COMMAND:
if(HIWORD(wParam)==BN_CLICKED)
{
if((HWND)lParam==BeginButton) // нажатие кнопки "Начать закачку"
{
//SetWindowText(Link_Combo,"ссылка"); // записать свой URL
//return TRUE; // заблокировать нажатие кнопки
}
if((HWND)lParam==LaterButton) // нажатие кнопки "Закачать позже"
{
//return TRUE;
}
}
break;
case WM_SHOWWINDOW:
if(wParam)
{
Link_Combo=FindWindowEx(hwnd,FindWindowEx(hwnd,0,"TComboBox",0),"TComboBox",0);
BeginButton=FindWindowEx(hwnd,0,0,"Начать закачку");
LaterButton=FindWindowEx(hwnd,0,0,"Закачать позже");
}
break;
}
return OriginalWinProc(hwnd,Msg,wParam,lParam); // вызываем оригинальную
}