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

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

Как прочитать из commdlg.dll текстовый ресурс


Alexander ©   (2004-01-20 15:04:00) 

Сначала пытаюсь LoadLibrary("commdlg.dll");
выдаёт: Приложение или библиотека C:\WINNT\system32\commdlg.dll не является образом программы для Windows NT. Проверьте назначение установочного диска.

Когда пытаюсь hLib := LoadLibraryEx('commdlg.dll', 0, LOAD_LIBRARY_AS_DATAFILE)
то hLib = 0
GetLastError=193 (ERROR_BAD_EXE_FORMAT) то есть то же самое, но eXeScope его открывает.
Что я не так делаю?


Alexander   (2004-01-21 18:03:00) [1]

В comdlg32.dllнет нужных мне текстовых ресурсов.
Может задача решается иначе?
Мне нужно для задания на печать, которое находится в очереди, получить размер бумаги. В файле commdlg.dllвсе эти значения присутсвуют (ну например A4 210 x 297 мм для русской винды, а в английской я получу на английском эту строку).
И файл присутсвует во всех версиях Windows - значит сама винда именно его и использует.


Agent13   (2004-01-21 15:06:00) [2]


> function LoadLibrary16(LibFileName: PAnsiChar): Cardinal;
> stdcall; external kernel32 index 35;

Это пашет (ну в том смысле, что эксепшены не вылетают, а насчёт работы с бибилиотекой - то не знаю, не пробовал).
И вообще - тебе это жизненно важно, юзать именно 'commdlg.dll'?
'commdlg32.dll' никак не подойдёт?


Alexander   (2004-01-21 08:26:00) [3]

Порылся в интернете, нашёл инфу, что с 16-ти битовыми dll нужно работать через недокументированные функции винды: LoadLibrary16 и FreeLibrary16
Что-то типа того:
function LoadLibrary16(LibFileName: PAnsiChar): Cardinal; stdcall; external kernel32 index 35;
function FreeLibrary16(hLib: Cardinal): Cardinal; stdcall; external kernel32 index 36;
Но не пашет :(
Может у кого получалось?


Agent13   (2004-01-20 15:15:00) [4]

Я попробовал у себя сделать то же самое - вылезла эта же ошибка. Единственное, что приходит в голову - commdlg.dll - библиотека под вин 3.1, т.е 16-битная. Ума не приложу, почему LoadLibrary её не понимает, но вызов 32-битной библиотеки:

LoadLibrary('comdlg32.dll')

проходит корректно.


Наверх

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