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

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



Память: 0.46 MB
Время: 0.022 c
3-1082017814
Flagman
2004-04-15 12:30
2004.05.16
Как зарегистрировать DOA?


14-1083165726
PaRL
2004-04-28 19:22
2004.05.16
News


3-1082701656
helimos
2004-04-23 10:27
2004.05.16
Thread ADO Oracle - Необходимо во время запроса параллельно счи


1-1082651546
Vitalnet
2004-04-22 20:32
2004.05.16
Увидеть весь тект в выподающем меню


9-1072442625
MoGiLsHiKK
2003-12-26 15:43
2004.05.16
Первая игра???




   Наверх