Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

Вопрос по DLL   Найти похожие ветки 

 
ph0sgen ©   (2006-08-31 04:37) [0]

Доброго времени суток, уважаемые мастера.

вопрос такой:


library Primer;

uses
 Windows;

begin
 // какое-то действие ...
end.


вызов :   LoadLibrary("Primer.dll")

можно ли при вызове DLL передать ей какие либо данные?
(чтобы с ними работать в dll между begin end.
например MessageBox какой-нибудь)

Спасибо за внимание.


 
Сергей М. ©   (2006-08-31 09:03) [1]

Можно.
Например, с использованием Memory Mapped File


 
ph0sgen ©   (2006-08-31 14:26) [2]

Спасибо. А можно пожалуйста поподробробнее?


 
Сергей М. ©   (2006-08-31 14:33) [3]

Можно.

Код, выполняющий загрузку DLL, создает перед этим MMF-объект (см. CreateFileMapping + MapViewOfFile) и записывает в обазованное при этом АП нужные данные.

Процедура инициализации DLL делает то же самое, получая при этом те самые данные.


 
ph0sgen ©   (2006-08-31 14:52) [4]

Возможен небольшой пример?


 
Сергей М. ©   (2006-08-31 14:57) [5]

Возможен.
Но перед этим вопрос - справка по MMF тобой уже прочитана/изучена ?


 
ph0sgen ©   (2006-08-31 15:42) [6]

Пытаюсь начать так:


program test;
var
 hFile : Cardinal;
 hMap  : Cardinal;
 Mem   : Pointer;

begin
 hFile := CreateFile("C:\Library.dll", GENERIC_READ or GENERIC_WRITE,
                     FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
                     FILE_ATTRIBUTE_NORMAL, nil);
 case hFile of DWORD(-1) : Exit; end;

 hMap := CreateFileMapping(hFile, nil, PAGE_READWRITE, 0, 0, "C:\Library.dll");
 case hMap of 0 : Exit; end;

 Mem := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
 
 

end;


а когда нужно вызывать LoadLibrary? и куда писать данные?


 
Сергей М. ©   (2006-08-31 15:56) [7]

Ты вот это

If hFile is (HANDLE)0xFFFFFFFF, the calling process must also specify a mapping object size in the dwMaximumSizeHigh and dwMaximumSizeLow parameters. The function creates a file-mapping object of the specified size backed by the operating-system paging file rather than by a named file in the file system

в справке читал ?


 
Desdechado ©   (2006-08-31 16:59) [8]

Ты скажи лучше, что ты хочешь сделать.
А то ведь удобнее вызывать функции из DLL.
Не забудь, что твою DLL можно загрузить несколько раз. Какой эффект ты от этого ожидаешь?



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

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.068 c
8-1141571691
Sco
2006-03-05 18:14
2006.09.17
Взрыв


10-1123664221
Aleksandrrr
2005-08-10 12:57
2006.09.17
Передача данных в Excel


11-1132030796
DmiSb
2005-11-15 07:59
2006.09.17
Нужен аналог VCL DateTimePicker ?


2-1156596558
angelika
2006-08-26 16:49
2006.09.17
горячие клавиши (ctrl+key)


3-1152864774
logslava
2006-07-14 12:12
2006.09.17
как выбрать значение из набора записей возвращаемых процедурой