Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизВопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.029 c