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

Вниз

hinstance   Найти похожие ветки 

 
ph0sgen ©   (2006-08-31 20:12) [0]

Доброго времени суток.

имеется код:


library liba;

uses
 windows;

var
 a:array[0..255] of char;

begin
 getmodulefilename(hinstance,@a,255);
 messagebox(0,a,a,0)

end.


вопрос:
почему если передать функции getmodulefilenamе 0 вместо hinstance
то выводится имя файла, который вызвал DLL?

как еи DLL самому определить hinstance, чтобы возвращалось имя DLL?

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


 
begin...end ©   (2006-08-31 21:05) [1]

> ph0sgen ©   (31.08.06 20:12)

> почему если передать функции getmodulefilenamе 0 вместо hinstance
> то выводится имя файла, который вызвал DLL?

Так и задумано. См. в справке описание GetModuleFileName, параметра hModule:

hModule

Identifies the module whose executable filename is being requested. If this parameter is NULL, GetModuleFileName returns the path for the file used to create the calling process.


> как еи DLL самому определить hinstance, чтобы возвращалось
> имя DLL?

Глобальная переменная HInstance инициализируется значением базового адреса загрузки исполняемого модуля (в данном случае -- библиотеки) в модуле SysInit.pas, который подключается автоматически. При загрузке DLL к моменту начала исполнения кода между begin и end эта переменная уже будет инициализирована. Поэтому приведённый Вами код корректен -- он сообщит как раз путь к файлу DLL. Только 255 лучше заменить на MAX_PATH.


 
ph0sgen ©   (2006-08-31 22:29) [2]

> begin...end

спасибо.
а каким образом происходит инициализация?


 
Eraser ©   (2006-08-31 22:49) [3]

> [2] ph0sgen ©   (31.08.06 22:29)

begin...end уже ведь дал наводку - см. модуль SysInit.pas.


 
Игорь Шевченко ©   (2006-08-31 23:23) [4]


> а каким образом происходит инициализация?


Джеффри Рихтер очень хорошо этот процесс описывает.



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

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

Наверх




Память: 0.47 MB
Время: 0.054 c
2-1166652922
21h
2006-12-21 01:15
2007.01.14
Как отправить мессадж на сервер через TNMNNTP?


15-1167059135
oldman
2006-12-25 18:05
2007.01.14
Ну почему люди не хотят делать так?...


2-1166690745
Slimer
2006-12-21 11:45
2007.01.14
DBGrid


15-1166510583
Fredy314
2006-12-19 09:43
2007.01.14
Интернет через ТВ кабель, как сделать.


15-1166785539
vitv
2006-12-22 14:05
2007.01.14
Кто-нибудь учил С++ по книге У.Савитча?