Плагины ДМ
Moderators: Korney San, marcipan
Плагины ДМ
Народ, а подскажите как плагины ДМ в своей программе можно подключить и использовать (т.е. вызывать функции и процедуры)?! Вымотался уже, чет ниче не получается!
Заранее спасибо!
Заранее спасибо!
- 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
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Ну так LoadLibrary, переменная типа
GetProcAddress ну и дальше как положено.
Что непонятно-то?
Code: Select all
TRegisterPlugIn = function: IDMPlugIn; stdcall;
Что непонятно-то?
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Делал так, но ерунда какая то получается. Ошибки летят разные постояно типа RuntimeError когда завершаем приложение
type
TDMPlugin = function : IDMPlugIn; stdcall;
var
hndl : thandle;
PlugIn : TDMPlugin;
plug : IDMPlugin;
dllname: pchar;
begin
dllname:=pchar(extractfilepath(paramstr(0))+'dll\dmtest_plugin.dll');
hndl:=loadlibrary(dllname);
if hndl<>0 then
begin
PlugIn:=getprocaddress(hndl,'RegisterPlugIn');
if plugin<>nil then
begin
plug:=plugin;
showmessage(plug.GetName);
end;
end;
end;
type
TDMPlugin = function : IDMPlugIn; stdcall;
var
hndl : thandle;
PlugIn : TDMPlugin;
plug : IDMPlugin;
dllname: pchar;
begin
dllname:=pchar(extractfilepath(paramstr(0))+'dll\dmtest_plugin.dll');
hndl:=loadlibrary(dllname);
if hndl<>0 then
begin
PlugIn:=getprocaddress(hndl,'RegisterPlugIn');
if plugin<>nil then
begin
plug:=plugin;
showmessage(plug.GetName);
end;
end;
end;
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
А где ж им не лететь, когда надо
Курите присваивание указателей.
ну и далее по тексту.@PlugIn:=getprocaddress(hndl,'RegisterPlugIn');
if plugin<>nil then
begin
plug:=plugin();
Курите присваивание указателей.
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Ниче не изменило, результат тот же!Korney San wrote:А где ж им не лететь, когда надону и далее по тексту.@PlugIn:=getprocaddress(hndl,'RegisterPlugIn');
if plugin<>nil then
begin
plug:=plugin();
Курите присваивание указателей.
И еще вопрос как можно из длл вызвать функцию exe, пожалуйста поподробнее.
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Вылеты на выходе? А FreeLibrary Пушкин писать должен? DLL это Вам не просто переменная.rus_999 wrote:Ниче не изменило, результат тот же!
Передать ссылку на функцию exe в DLL. Как это делает DM.rus_999 wrote: И еще вопрос как можно из длл вызвать функцию exe, пожалуйста поподробнее.
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:
F1 ! F1 ! F1 !
На примере плагиновской EventRaised:
Sapienti sat.
На примере плагиновской EventRaised:
Code: Select all
type
TActionFunc = function (action, parameters: WideString): WideString of object;
const
actConnect = 'Connect';
type
TThunkSetupForm = class(TForm)
...
public
{ Public declarations }
DoPluginAction: TActionFunc;
...
end;
procedure TThunkSetupForm.FormCreate(Sender: TObject);
begin
...
DoPluginAction:=nil;
...
end;
procedure TThunkSetupForm.SB2Click(Sender: TObject);
begin
...
if Assigned(DoPluginAction) then
begin
DoPluginAction(actDisconnect, FPlugins[i].FileName);
...
end;
...
end;
procedure TDMTestPlugIn.PluginConfigure(params: WideString);//вызов окна конфигурации плагина
begin
CF:=TThunkSetupForm.Create(nil);
...
CF.DoPluginAction:=EventRaised;
CF.ShowModal;
...
CF.Free;
end;
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:
Начнём сначала. Вы хотите подключить плагин DM к своей программе и вызвать функцию этой программы из плагина?rus_999 wrote:Чет не понял, че куда добавлять. Какая часть в программе, какая в библиотеке?
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Да. Чтоб можно было вызвать из программы функцию плагина, которая после завершения своей работы вызывает процедуру из программы.Korney San wrote:Начнём сначала. Вы хотите подключить плагин DM к своей программе и вызвать функцию этой программы из плагина?rus_999 wrote:Чет не понял, че куда добавлять. Какая часть в программе, какая в библиотеке?
Реакции пытаюсь добиться, как при вызове в плагине функции DoAction/
-
- Posts: 2
- Joined: 28 Jan 2009, 11:33 Wed
- Contact:
Есть предложение по плагину, не знал где писать, решил здесь.
Вобщем такая ситуация. У меня очень низкая скорость инета. Более того, она сильно колеблется. В результате закачка в ДМ подолгу виснет на нулевой скорости. Лечится по истечении минут 10-15 , или если нажать паузу-продолжить.
И того, подсчитал свою среднюю скорость закачки файлов - 0,5 кб/с. Если нажимать паузу-продолжить, то среднюю скорость можно поднять до 10 кб/с, что, согласитесь, значительно лучше.
Вот и хотелось бы увидеть аткой плагин, который запросы отправлял автоматически (невзирая на то закачивается ли что-то там, или нет) каждые 6-8 (или хотя бы 10) секунд. Так сказать специально для "инвалидного" инета.
Скажите, сложно ли такое реализовать?
Вобщем такая ситуация. У меня очень низкая скорость инета. Более того, она сильно колеблется. В результате закачка в ДМ подолгу виснет на нулевой скорости. Лечится по истечении минут 10-15 , или если нажать паузу-продолжить.
И того, подсчитал свою среднюю скорость закачки файлов - 0,5 кб/с. Если нажимать паузу-продолжить, то среднюю скорость можно поднять до 10 кб/с, что, согласитесь, значительно лучше.
Вот и хотелось бы увидеть аткой плагин, который запросы отправлял автоматически (невзирая на то закачивается ли что-то там, или нет) каждые 6-8 (или хотя бы 10) секунд. Так сказать специально для "инвалидного" инета.
Скажите, сложно ли такое реализовать?