Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Вниз

создание и подключение плагина   Найти похожие ветки 

 
Std   (2006-03-22 23:32) [0]

Доброго времени суток. подскажите пожалуйста(кусочком кода) как создать програму что бы можна было добавлять к ней плагины. Ситуация: в папке с прогой есть папка plugin в нее добавляется дллка. и при выполнении проги когда пользователь нажимает кнопку открыть файл в окне диалога появляется список файлов для открытия с только что добавленой дллки. например сама прога умее открывать только *.txt файлы а после добавления плагина она умеет открывать еще и *.bmp файлы.
Заранее благодарен


 
Der Nechk@ssoff ©   (2006-03-23 07:34) [1]

Интерсный вопрос-жаль помочь не могу...


 
EvS ©   (2006-03-23 08:19) [2]

>подскажите пожалуйста(кусочком кода)

Сначала тебе надо не кусочком кода, а литературой на эту тему поинтересоваться


 
TUser ©   (2006-03-23 08:39) [3]

Надо реализовать
1. Придумать, какие функции должна экспортировать dll, реализующая плагин
2. Реализовать сканировние dll ок в требуемой папке. Те, кто экспортирует, что требуется, - подключать. См. LoadLibraray, GetProcAddress.


 
Der Nechk@ssoff ©   (2006-03-23 08:45) [4]

У меня схожая проблема.


> TUser ©   (23.03.06 08:39) [3]


Как реализовать сканирование папки на наличие длл-ок?


 
Std   (2006-03-23 12:47) [5]

ТОесть нада в папке просмотреть все дллки, и чтобы у каждой дллки были одинаковые названия функций?
З.Ы. а какую литературу почитать?


 
Kolan ©   (2006-03-23 15:59) [6]

Тайскера и Пачеко. Про Dll. Есть у Анатолия подгорецкого на сайте.


 
Andy BitOff ©   (2006-03-23 22:27) [7]

Kolan ©   (23.03.06 15:59) [6]
А чего же с маленькой буквы? =)


 
Amoeba ©   (2006-03-24 10:16) [8]

Несколько статей об использовании плагинов найдешь на http://www.delphikingdom.com


 
Kolan ©   (2006-03-24 23:17) [9]

Andy BitOff ©   (23.03.06 22:27) [7]
Потомучто Miss Type, а ШО? :).


 
Старик   (2006-03-25 08:33) [10]

Проверить папку на наличие DLL-файлов. Результат - найденные DLL в списке класса TStringList

procedure TForm1.ScanForModules(var Modules : TStringList);
var sr : TSearchRec;
   FileAttrs : integer;
begin
FileAttrs := faAnyFile;
if FindFirst("Modules\*.dll", FileAttrs, sr) = 0 then
repeat
if (sr.Attr and FileAttrs) = sr.Attr then Modules.Add(sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);
end;

Определяем, какие из найденных DLL являются "нашими":
procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
   ModuleHandle : integer;
begin
for i := 0 to ListBox1.Count - 1 do begin
ModuleHandle := LoadLibrary(PChar("Modules\" + ListBox1.Items.Strings[i]));
if ModuleHandle >= 32 then begin
IsName := GetProcAddress(ModuleHandle, "IsSampleModuleName");
if assigned(IsName) then ListBox2.Items.Add(string(IsName));
FreeLibrary(ModuleHandle);
end;
end;
end;

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


 
Старик   (2006-03-25 08:34) [11]

Сорри, забыл:

type
 TGetNameFunc = function : PChar;

var
 Form1: TForm1;
 IsName : TGetNameFunc;

implementation

{$R *.dfm}
...
И далее по списку



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1143297701
Muhan_
2006-03-25 17:41
2006.04.09
Проблема с кодировками ((


3-1139570207
vajo
2006-02-10 14:16
2006.04.09
Ошибка подключения IB базы из сети


2-1143184519
Scavenger
2006-03-24 10:15
2006.04.09
Архив.


2-1143385762
AlexanderMS
2006-03-26 19:09
2006.04.09
Печать от А до Я


15-1142923918
Бугага
2006-03-21 09:51
2006.04.09
RFC заголовок





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский