Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Странная работа GetModuleFileName с библиотеками


Страницы:   1 2

Piter ©   (2005-08-18 22:15:00) 

Заметил странную особенность работы GetModuleFileName с библиотекой. Если для EXE'шников возвращаемая строка в имени файла учитывает регистр, например:

Result = '...\ Project1.exe

То для библиотек имя файла всегда в нижнем регистре:

Result = '...\library1.dll'

Даже если библиотека называется 'LiBrArY.dll'.

Почему так и самое главное - как побороть?

Не то, чтобы критически важно, но данное поведение немного снижает красоту плагиновой программы.


alpet   (2005-08-19 07:37:00) [21]

Точнее until not Module32Next (h, me) or (result <> '');


alpet   (2005-08-19 07:25:00) [22]

1. The GetFullPathNamefunction retrieves the full path and file name of a specified file.

DWORD GetFullPathName(
 LPCTSTR lpFileName,
 DWORD nBufferLength,
 LPTSTR lpBuffer,
 LPTSTR* lpFilePart
);
Exported from kernel32.dll

2. Эти функции можно использовать для создания списка модулей, загруженых в АП процесса.

function GetModuleFileName2 (hMod: THandle): string;
var me: MODULEENTRY32;
   h: THandle;
begin
result := '';
h := CreateToolHelp32Snapshot (TH32CS_SNAPMODULE, GetCurrentProcessId ());
if h = INVALID_HANDLE_VALUE then exit;
me.dwSize := sizeof (me);
if Module32First (h, me) then
 repeat
  if me.hModule = hMod then  
    result := me.szExePath;    
 until Module32Next (h, me) or (result <> '');
CloseHandle (h);
end;
</code


Piter   (2005-08-18 22:48:00) [23]

Что такое GetFullPatchName?

Про Module32First/Module32Next я вообще не понял.


alpet   (2005-08-18 22:39:00) [24]

1. Почему - видимо из-за того что dll.
2. Побороть, хм. ToolHelp32 Module32First/Module32Next, не дают решения сабжа? или GetFullPatchName?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо