Главная страница
    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.029 c
2-1156659780
andy_hs
2006-08-27 10:23
2006.09.17
сделать программу невидимой (службой)


10-1123495556
Nick Denry
2005-08-08 14:05
2006.09.17
Можно ли средсвами TMediaPLayer


2-1156608865
хм...
2006-08-26 20:14
2006.09.17
Edit


15-1156771702
Черный Маг
2006-08-28 17:28
2006.09.17
Высший курс черной магии.


8-1141657165
denis24
2006-03-06 17:59
2006.09.17
Изменение разрешение картинки





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