Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.014 c
15-1166743505
Petr V. Abramov
2006-12-22 02:25
2007.01.14
Работа на страну


2-1166533930
Steep
2006-12-19 16:12
2007.01.14
Процедуры и функции


2-1166914421
Германн
2006-12-24 01:53
2007.01.14
Тип целого для результата вычислений


15-1166474454
Cyrax
2006-12-18 23:40
2007.01.14
Можно ли (теоретически и практически) заюзать Xerces ?


2-1167041361
webpauk
2006-12-25 13:09
2007.01.14
Перехват закрытия приложения





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