Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как узнать полный путь и имя файла загруженной DLL

Delphi , Файловая система , DLL и PlugIns

Как узнать полный путь и имя файла загруженной DLL

- Чем отличается продавец подержанных машин от продавца компьютеров?
- Продавец подержанных машин знает, когда он тебе врет.


uses
  Windows;

procedure ShowDllPath stdcall;
var
  TheFileName: array[0..MAX_PATH] of char;
begin
  FillChar(TheFileName, sizeof(TheFileName), #0);
  GetModuleFileName(hInstance, TheFileName, sizeof(TheFileName));
  MessageBox(0, TheFileName, 'The DLL file name is:', mb_ok);
end;

Here's the translation of the text into Russian:

Программа Delphi! Ответ на ваши вопросы: 1. Как получить полный путь и имя загруженного DLL? В этом коде вы уже делаете это! Функция GetModuleFileName возвращает полный путь и имя модуля (DLL) с указанным ограничением размера (sizeof(TheFileName)). Результат хранится в массиве TheFileName. Вы можете отобразить его с помощью MessageBox. 2. Какова разница между дилером автомобилей и дилером компьютеров? Вопрос кажется не связанным с программированием, но я постараюсь ответить! Дилер автомобилей продает предыдущие модели машин, в то время как дилер компьютеров может продавать новые или отремонтированные компьютеры. Основная разница заключается в том, что дилер автомобилей обычно работает с физическими товарами (машины), а дилер компьютеров может работать как с физическими, так и с цифровыми продуктами (компьютеры, программное обеспечение).

О коде: Процедура ShowDllPath демонстрирует, как получить полный путь и имя загруженного DLL с помощью GetModuleFileName. Функция принимает три параметра: * hInstance: Обратная ссылка на экземпляр модуля. * lpModuleName: Указатель на null-terminated строку, которая получает имя модуля (DLL). * nSize: Размер буфера, указанного в lpModuleName.

В этом коде hInstance не определено явно. Возможно, это глобальная переменная или параметр, передаваемый процедуре. Нужно заменить его на реальный handle вашего DLL. FillChar инициализирует массив TheFileName нулями (#0) для очистки любых мусорных значений. Затем GetModuleFileName заполняет буфер именем и путём модуля. Наконец, MessageBox отображает сообщение с именем и путём DLL в заголовке и тексте.

Если вы хотите получить путь к конкретному DLL, вам нужно его сначала загрузить с помощью LoadLibrary или LoadLibraryEx. Затем можно передать handle, возвращенный этими функциями, GetModuleFileName. Альтернативное решение:

procedure ShowDllPath(DllName: string);
var
  hInstance: HMODULE;
begin
  hInstance := LoadLibrary(DllName);
  if hInstance <> 0 then
  begin
    FillChar(TheFileName, sizeof(TheFileName), #0);
    GetModuleFileName(hInstance, TheFileName, sizeof(TheFileName));
    MessageBox(0, TheFileName, 'Имя файла DLL:', mb_ok);
    FreeLibrary(hInstance);
  end;
end;

В этом примере вы передаете имя DLL для загрузки как строковый параметр. Если загрузка succeeds, то получает полный путь и имя с помощью GetModuleFileName и отображает его в сообщении. Наконец, освобождает загруженный библиотеку с помощью FreeLibrary.

В статье описывается способ получения полного пути и имени файла загруженной DLL с помощью функции GetModuleFileName в языке программирования Delphi.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: DLL и PlugIns ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 19:58:44/0.0066819190979004/2