Главная страница
    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
1-14009
winmsd
2002-08-25 17:59
2002.09.05
FileSetDate


8-14176
novomod
2002-02-25 19:48
2002.09.05
Проигрыватель.


4-14344
ReYka
2002-06-28 12:19
2002.09.05
Как перехватить запуск любого приложения? И еще...


1-13989
Mr.Kirya
2002-08-25 22:34
2002.09.05
Панель


1-14091
ErmSergey
2002-08-23 14:15
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский