Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.045 c
15-1156998605
cyborg
2006-08-31 08:30
2006.09.17
Кто тут монитор хотел?


2-1156552426
batya17
2006-08-26 04:33
2006.09.17
Звук


15-1156310755
Rentgen
2006-08-23 09:25
2006.09.17
Кому не сложно, помогите узнать певицу или название песни!


3-1152875840
drashka
2006-07-14 15:17
2006.09.17
Как лучше реализовать поиск?


11-1132651033
MTsv DN
2005-11-22 12:17
2006.09.17
Как убрать скролл у ListView...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский