Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Узнать путь к dll изнутри dll / 6 сообщений из 6, страница 1 из 1
04.05.2018, 20:24
    #39640380
Hommer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать путь к dll изнутри dll
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
// works under Win XP (Win server 2003) or higher
function GetModuleHandleExW(Flags: DWORD; ModuleNameOrAddr: PWideChar; var ModuleHandle: HMODULE): BOOL; stdcall; external kernel32 name 'GetModuleHandleExW';

// with path
function GetDllFileName: UnicodeString;
const
  GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2;
  GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS: DWORD = 4;
var
  ModuleHandle: HMODULE;
  Res: DWORD;
begin
  ModuleHandle := 0;
  SetLength(Result, 32767);
  if GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS or GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, @GetDllFileName, ModuleHandle) then
  begin
    Res := GetModuleFileNameW(ModuleHandle, PWideChar(Result), Length(Result));
    if Res = 0 then
      raise Exception.Create('GetModuleFileName fails with error: ' + SysStuff.GetLastOsErrorMessage);
    SetLength(Result, Res);
  end
  else
    raise Exception.Create('GetModuleHandleEx fails with error: ' + SysStuff.GetLastOsErrorMessage);
end;



Существует ли способ для windows 2000?
...
Рейтинг: 0 / 0
04.05.2018, 21:19
    #39640411
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать путь к dll изнутри dll
HommerСуществует ли способ для windows 2000?

С начала времён существует переменная HInstance.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.05.2018, 21:58
    #39640428
Hommer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать путь к dll изнутри dll
Dimitry SibiryakovHommerСуществует ли способ для windows 2000?

С начала времён существует переменная HInstance.

Так конечно проще. Спасибо :)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function GetDllFileName: UnicodeString;
var
  Res: DWORD;
begin
  SetLength(Result, 32767);
  Res := GetModuleFileNameW(HInstance, PWideChar(Result), Length(Result));
  if Res = 0 then
    RaiseLastOSError;
  SetLength(Result, Res);
end;


Но всё-равно, GetModuleFileNameW начиная с Windows XP.
...
Рейтинг: 0 / 0
04.05.2018, 23:10
    #39640460
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать путь к dll изнутри dll
HommerНо всё-равно, GetModuleFileNameW начиная с Windows XP.Обертка над A успешно работала с Win95.
...
Рейтинг: 0 / 0
04.05.2018, 23:11
    #39640461
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать путь к dll изнутри dll
Hommer,

Код: pascal
1.
SysUtils.GetModuleName(HInstance)
...
Рейтинг: 0 / 0
05.05.2018, 10:31
    #39640571
Hommer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать путь к dll изнутри dll
А ведь действительно :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Узнать путь к dll изнутри dll / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]