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

Вниз

dll и основная программа   Найти похожие ветки 

 
Hamlet   (2002-08-23 09:56) [0]

маленький вопрос - как внутри dll получить путь к вызывающему ее приложению?
через передачу параметров не предлагать :)))


 
Digitman ©   (2002-08-23 10:08) [1]

см. Win32API GetModuleHandle(), GetModuleFileName()


 
Hamlet   (2002-08-23 10:12) [2]

уточнение - неизвестно имя запускающей программы... соответственно, GetModuleFileName, imho, не подходит


 
Ekaterina ©   (2002-08-23 10:16) [3]

Application.ExeName


 
Hamlet   (2002-08-23 10:18) [4]

2Ekaterina - еще раз повторяю - путь необходимо получить ВНУТРИ dll.... соответственно, никакого объекта Application в ней нет... иначе было бы просто слишком


 
Reindeer Moss Eater   (2002-08-23 10:20) [5]

Paramstr(0)


 
Ученик ©   (2002-08-23 10:22) [6]

function GetProgramFileName(Module : HModule = 0) : string;
var
szModuleName : array[0..MAX_PATH] of Char;
begin
if GetModuleFileName(Module, szModuleName, MAX_PATH) > 0 then
Result := StrPas(szModuleName)
else
Result := ""
end;


 
Ekaterina ©   (2002-08-23 10:25) [7]

library Project2;
uses
SysUtils,
Classes,
Forms,
Dialogs;

{$R *.res}

procedure Test;
begin
ShowMessage(Application.ExeName);
end;

exports
Test;

begin
end.


 
Hamlet   (2002-08-23 10:30) [8]

2Ekaterina - а ты сама пробовала? не работает ведь


 
Ekaterina ©   (2002-08-23 10:32) [9]

Попробуй, а потом говори


 
Hamlet   (2002-08-23 10:38) [10]

%() виноват...
я-то пробовал, только ошибка в другом месте была, а выскакивала тут...
все работает, сейчас ту ошибку поймал - теперь и здесь работает
еще раз приношу извинения


 
Yuri-7   (2002-08-23 10:40) [11]

Без передачи параметров - никак. Ведь с DLL может одновременно работать несколько приложений, и какой, в этом случае HOST ты захочешь узнать?


 
Yuri-7   (2002-08-23 10:45) [12]

>>Hamlet & Ekaterina
Ну и получилась полная чушь. Функцию Test надо будет вызывать из приложения, имя которого можно узнать и без этой функции и dll.


 
Ekaterina ©   (2002-08-23 10:50) [13]

Требовалось-то узнать не из приложения, а внутри dll.


 
Yuri-7   (2002-08-23 10:56) [14]

Зачем тогда функция exports и как все-таки быть с разными приложениями, работающими с одним dll?


 
Ekaterina ©   (2002-08-23 11:07) [15]

Можно и без exports, это только для примера. В любом месте внутри dll этот код будет работать. С разными приложениями тоже будет работать, так как каждого процесса, используещего dll обшим будет только код DLL, НО НЕ ДАННЫЕ! Все данные отображённой в некоторый процесс DLL инициализируются заново. И переменная Аррlication в том числе.



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

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

Наверх




Память: 0.49 MB
Время: 0.016 c
1-14064
Ettore
2002-08-27 09:59
2002.09.05
реестр Windows: считывание Value Name (Default)


1-14087
Andy_K
2002-08-23 14:01
2002.09.05
Установка компонентов


4-14320
Новенький в Делфи
2002-07-03 20:37
2002.09.05
Вроде ничего сложного, а ошибка вылетает :(


1-14040
Андрусь
2002-08-25 14:38
2002.09.05
Подскажите функцию сравнения двух указателей на real


1-14035
Up
2002-08-26 06:31
2002.09.05
Cкрытые ключи реестра