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

Вниз

Application.Exename в DLL   Найти похожие ветки 

 
SHS   (2004-05-01 09:06) [0]

Имя исполняемого файла могу узнать через Application.Exename, как узнать это для своей DLL? Знаю что можно через GetModuleFilename, ещё есть варианты?


 
Kerk ©   (2004-05-01 11:14) [1]

Чем GetModuleFileName не устраивает?


 
SHS   (2004-05-01 13:44) [2]

Kerk, странная у тебя манера, вопросом на вопрос отвечать... Ну, ладно, GetModuleFilename меня полностью устраивает, а теперь посмотри на мой вопрос и ответь, если знаешь.

P.S. Меня интересует, делается ли это только через WinAPI или также можно средствами Delphi?


 
Юрий Зотов ©   (2004-05-01 15:32) [3]

> SHS

Можно и средствами Delphi, только собственный Application в DLL надо подменить на Application из EXE. Для этого в DLL пишем:

var
 OldApp: TApplication;

procedure ReplaceApp(App: TApplication);
begin
 OldApp := Application;
 Application := App
end;

procedure RestoreApp;
begin
 Application := OldApp
end;

И теперь сразу после загрузки DLL надо вызвать:
ReplaceApp(Application)
а перед выгрузкой - RestoreApp.


 
default ©   (2004-05-01 20:19) [4]

нет, только через Win32 API
ParamStr(0), TApplication.ExeName используют GetModuleFileName
поэтому код с GetModuleFileName(HInstance, ...) самый быстрый...


 
Palladin ©   (2004-05-01 20:34) [5]


> SHS   (01.05.04 13:44) [2]

Ну а все таки чем?


 
Юрий Зотов ©   (2004-05-01 22:39) [6]

> default ©   (01.05.04 20:19) [4]

Так все-таки: "только" или "самый быстрый"? Это же разные вещи.
:о)


 
Dimaxx ©   (2004-05-01 23:15) [7]

Не парься и вызывай GetModuleFileName


 
SHS   (2004-05-02 12:02) [8]

> Palladin ©   (01.05.04 20:34) [5]
Да просто я использовал для DLL:
iFile: array[0..MAX_PATH + 2] of char;
GetModuleFileName(hInstance, iFile, MAX_PATH);

А вот это для EXE:
ChangeFileExt(Application.ExeName, ".ini");
У меня возник вопрос, есть ли что-нибудь подобное для DLL.
Спросил для общего развития, чтобы знать наверняка.

Всем огромное спасибо за разъяснения, с уважением



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
1-1083401859
pd
2004-05-01 12:57
2004.05.16
Как программно создать таймер?


1-1083183959
Михаил
2004-04-29 00:25
2004.05.16
Многомерные динамические массивы


9-1067790741
Unknown user
2003-11-02 19:32
2004.05.16
Оцените возможности 3D OpenGL движка.


1-1083130700
Denis Davidoff
2004-04-28 09:38
2004.05.16
Delphi 8 капризничает


1-1083070154
Goida
2004-04-27 16:49
2004.05.16
Почему ошибка при присвоении массива региону (VBA)?