![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как прочитать из 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')
проходит корректно.