Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.038 c
2-1166901178
ezorcist
2006-12-23 22:12
2007.01.14
завершение консольног приложения


1-1164026970
DelphiLexx
2006-11-20 15:49
2007.01.14
TTreeView ограничение на размер текста в узле


15-1166552703
PHPDeveloper
2006-12-19 21:25
2007.01.14
Upload файла через HTML форму из Delphi


2-1166627667
YuMB
2006-12-20 18:14
2007.01.14
Как задать время выполнения процедуры?


15-1166682900
вразлет
2006-12-21 09:35
2007.01.14
Туркменбаши того




   Наверх