Главная страница
    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.45 MB
Время: 0.012 c
1-1164031097
312kbps
2006-11-20 16:58
2007.01.14
Как, корректно закрыть оле соединение ?


15-1166704781
Jeer
2006-12-21 15:39
2007.01.14
Users vs Mouse


3-1161793929
rar
2006-10-25 20:32
2007.01.14
отключить пользователя от сервера


15-1166768633
Чапаев
2006-12-22 09:23
2007.01.14
Навеяно ветками про образование. "Их нравы"


2-1166430158
Любитель
2006-12-18 11:22
2007.01.14
Как можно показать n кнопок на панеле





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