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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
14-14224
Malder
2002-08-04 11:21
2002.09.05
Можно ли быть программистом не зная английского ?


3-13878
Slaviq
2002-08-16 15:52
2002.09.05
Query


3-13914
Igel
2002-08-13 08:30
2002.09.05
Как связать данные и TListBox?


1-14107
Юрий Федоров
2002-08-23 14:50
2002.09.05
Можно ли как-нибудь в DesignTime получить Application.ExeName?


7-14312
Озадаченный
2002-06-11 15:54
2002.09.05
Вопрос





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