Page 1 of 2

Плагин "Thunk" (плагинописателям) (не разрабатывается)

Posted: 18 Oct 2008, 16:29 Sat
by Korney San
Сам задвинул идею, сам её и сделал...

Плагин выполняет:
1. Подключение к себе других плагинов DM
2. Трансляцию запросов плагинов в DM
3. Трансляцию событий DM во все подключённые плагины
4. Отображение хода загрузки и выгрузки подключённых плагинов

Плагин позволяет:
1. Просмотреть имена подключённых плагинов в своих свойствах в настроках DM и на форме настроек
2. Вызвать форму настроек подключённого плагина со своей формы настроек
3. Подключённому плагину зарегистрировать собственную команду через

Code: Select all

myIDmInterface.DoAction('RegisterAction', AnyAction+' '+Self.ID)
4. Подключённому плагину проверить, зарегистрирована ли команда через

Code: Select all

myIDmInterface.DoAction('CheckAction', AnyAction)
5. Подключённому плагину получить вызов своей команды из другого подключённого плагина через

Code: Select all

EventRaised(AnyAction, parameters)
и вернуть результат (если кто не знает, EventRaised - функция :) )

Работа проверена на двух тестовых плагинах.
В плане добавление регистрации событий, для отправления своих событий другим плагинам.

Версия 0.1.0.0
Для работы другого плагина через Thunk нужно сменить расширение другого плагина на .tnk !

Плагин пишется в основном для себя, за неимением нужного функционала в DM. Использование его возможностей в других плагинах только приветствуется.
Подробности, предложения доработок, сообщения об ошибках принимаются в личку или по ICQ 204446455

Урезанная версия Thunk Lite, предназначенная для подключения ОДНОГО плагина на определённый период времени, лежит здесь.

Основная идея плагина в графическом виде:
Image

Разработка прекращена из-за появления неплохой альтернативы.

Posted: 17 Mar 2009, 17:45 Tue
by Korney San
Требуется доброволец или добровольцы для [пере]написания плагинов под новый стандарт Thunk-а.
Связь через личку, аську, почту, Я.Онлайн (ник KorneySan).

Thunk Lite +onNET

Posted: 18 Mar 2009, 8:50 Wed
by hazar
Выражаю огромную благодарность за проделанную работу. Thunk Lite это то что хотелось видеть в доп. опциях ДМ. Сегодня ночью опробовал сиё чудо, в очередной раз разорвало связь и Thunk Lite правильно дал команду плагину onNET на включение(именно в тот момент когда это было необходимо). Связь была восстановлена и запущены закачки, и до 6:00 был в фоне, в 6 тихо откл. плагин. Думаю что Thunk как буфер между ДМ и плагинами займёт свою нишу.
С уважением !

Re: Thunk Lite +onNET

Posted: 18 Mar 2009, 9:26 Wed
by Korney San
hazar wrote:Сегодня ночью опробовал сиё чудо, в очередной раз разорвало связь и Thunk Lite правильно дал команду плагину onNET на включение(именно в тот момент когда это было необходимо). Связь была восстановлена и запущены закачки, и до 6:00 был в фоне, в 6 тихо откл. плагин. Думаю что Thunk как буфер между ДМ и плагинами займёт свою нишу.
С уважением !
Не стоит преувеличивать возможности плагина. :oops:
Каждый делал свою работу - Thunk Lite подключал/отключал плагин onNet, плагин onNet проверял связь и запускал закачки.

Разработка Thunk сдвинулась с мёртвой точки - это главное. :)
Спецификация немного поменялась - в сторону гибкости.
Скоро выложу исходник плагина, рассчитанного на работу с/через Thunk.

Posted: 20 Mar 2009, 8:24 Fri
by hazar
Не стоит преувеличивать возможности плагина.
Каждый делал свою работу - Thunk Lite подключал/отключал плагин onNet, плагин onNet проверял связь и запускал закачки.
Согласен, каждый делал свою работу. Но без Thunk плагин onNET был неуправляем, т.е. невозможно было его остановить(тут он работал прекрасно в плане соединения и запуска). Так что не скромничайте :)
Всего вам доброго!

Posted: 03 May 2009, 11:36 Sun
by x2088
Это типа хаб для плагов? Да?

Posted: 03 May 2009, 20:04 Sun
by Korney San
x2088 wrote:Это типа хаб для плагов? Да?
Не типа, а хаб. Который позволяет им разговаривать друг с другом.

И скоро будут три плага, заточенные именно под это.

Posted: 12 May 2009, 18:54 Tue
by Kadet
А почему бы не написать плагин по-русски? Не думаю, что большинство пользователей знают английский :(

Posted: 12 May 2009, 20:33 Tue
by vasa_pmr
Kadet wrote:А почему бы не написать плагин по-русски? Не думаю, что большинство пользователей знают английский :(
???

Posted: 12 May 2009, 21:23 Tue
by Korney San
Kadet wrote:А почему бы не написать плагин по-русски? Не думаю, что большинство пользователей знают английский :(
Если Вы про само слово "плагин", которое переводится как "модуль" - я его пишу так же, как и разработчики основной программы. :)
Если же про "текст внутри" - плагин ещё в стадии глубокой разработки самой начинки, чтобы было время заниматься переводом (который там, к тому же, практически не нужен).

Posted: 13 May 2009, 7:45 Wed
by Kadet
Korney San wrote:(который там, к тому же, практически не нужен).
Что английский, что китайский :D
Идея хорошая, но открыв его тут же и закрыл. Что надо делать не понятно.

Posted: 13 May 2009, 10:25 Wed
by Korney San
Kadet wrote:Идея хорошая, но открыв его тут же и закрыл. Что надо делать не понятно.
Если нужно связать два плагина между собой - они слегка дописываются (под спецификацию Thunk), копируются в папку Plugins вместе с Thunk, переименовываются в .tnk, после чего получают возможность из ОДНОГО плагина выполнить команду ДРУГОГО через вызов стандартной DoAction с нестандартными параметрами.
Thunk делает эту фишку, "забытую" разработчиками DM.
Яркий пример подобного принципа - Miranda.

P.S. Выложил в первый пост картинку - для доходчивости.

Posted: 13 May 2009, 12:10 Wed
by Kadet
Korney San wrote: P.S. Выложил в первый пост картинку - для доходчивости.

Спасибо

Posted: 05 Jun 2009, 1:32 Fri
by lolxfr
Мне кажется было бы неплохо, если бы можно было добавить свой пункт в контекстное меню ДМ.
В данный момент это сделать через API нельзя,но можно реализовать - например перехватывая TrackPopupMenu Правда чтобы получить ИД закачки - нужно пробежать по списку закачек.

У меня почему-то такой перехват работает не совсем корректно
Допустим тыкаем на некий ***.zip
Изменяю меню,вызываю его,оно не меняется.
опять тыкаю на любой ***.zip Меняю меню,меняется.
То есть после смены расширения и первого тыкания - меню не меняется.После второго тыкания на тоже расширение-все ок

п.с. в нижепредставленном какое именно вызывается контекстное меню я не проверял.

Code: Select all

/* visual c++*/
               static DWORD WINAPI mouse_event_routine(LPVOID p)
	  {
//или SenMessage WM_CONTEXTMENU
		  mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP/*те ли флаги*/,
			  ((POINT*)p)->x-1/*можно попробывать другое число*/,((POINT*)p)->y,0,0);
		  return 0L;
	  }
	  static BOOL WINAPI MyTrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,
				int nReserved,HWND hWnd,CONST RECT * prcRect)
	  {
		  static BOOL repeat = FALSE;
		  if(repeat == FALSE)
		  {
			  POINT point;
			  GetCursorPos(&point);
			  QueueUserWorkItem(&mouse_event_routine,&point,0);
			  TrackPopupMenuEx(hMenu,uFlags,x,y,hWnd,NULL);
			  repeat = TRUE;
			  return 1;
		  }
		  else
		  {
			  repeat = FALSE;
		  }
		  uFlags |= TPM_RETURNCMD;
		  uFlags &= ~TPM_NONOTIFY;
		  AppendMenu(hMenu, MF_SEPARATOR,0,0);
		  InsertMenuItem(hMenu,-1,TRUE,&g_mii);
		  INT nRet = TrackPopupMenu(hMenu,uFlags,x,y,nReserved,hWnd,prcRect);
		  if(nRet)
		  switch(nRet)
		  {
				case ID_BANANA:
				{
				    MessageBoxW(hWnd,L"BANANA",L"MONKEY",0);
					break;
				}
				default:
					  PostMessage(hWnd,WM_COMMAND,nRet,0);
		  }
		  return nRet;  
	  }
Если автор Thunk добавит регистрацию своих менюшек через DoAction , думаю было бы совсем неплохо.

п.с.Добрый человек выкладывал обертку для плагина на с++ .плагина. Использовал ее.

Posted: 06 Jun 2009, 16:42 Sat
by Korney San
lolxfr wrote: Если автор Thunk добавит регистрацию своих менюшек через DoAction , думаю было бы совсем неплохо.
Как только дойдут руки...