Вниз
Скачать: CL | DM;

LoadLibrary   Найти похожие ветки 

 
А. Владимир   (2004-01-18 13:56) [0]

При попытке выполнить LoadLibrary не на динамической библиотеке возникает ошибка, как ее поймать?
Спасибо.


 
alex_*** ©   (2004-01-18 14:08) [1]

что-то вроде того было SafeLoadLibrary.
или try ... except


 
А. Владимир   (2004-01-18 14:17) [2]

try ... except не ловит...

C SafeLoadLibrary тоже самое..


 
Anatoly Podgoretsky ©   (2004-01-18 14:18) [3]

LoadLibrary возвращает результат, его надо анализировать а не игнорировать.


 
А. Владимир   (2004-01-18 14:24) [4]

Ошибка возникает сразу же после вызова функции. Я делаю дальшейший анализ возвращаемого результата, но от ошибки избавится не могу.


 
Anatoly Podgoretsky ©   (2004-01-18 14:26) [5]

Какая ошибка?


 
А. Владимир   (2004-01-18 14:28) [6]

"Неверный образ", причем это происходит только в XP.


 
Anatoly Podgoretsky ©   (2004-01-18 14:31) [7]

Приводи код, но вполне возможно, что и неверный образ. Особенно приводи обработку ошибок и в каком месте у тебя возникает ошибка, надеюсь ты протрассировал. Вот тогда возможно и помогут.


 
А. Владимир   (2004-01-18 14:39) [8]

Да, конечно протрассировал. Она возникает при вызове LoadLibrary не на dll (например текстовый файл). В 98 такого нет. Собственно код. Можно создать пустой проект и вызвать LoadLibrary на тектовике. Пробовал делать try ... except на эту строчку, но все-равно не ловится :(


...
var
LibHandle : THandle;
...
begin
...
// loading plugin
LibHandle:=LoadLibrary(PChar(AppPath + CryptPluginPath + PluginName));
if LibHandle >= 32 then
begin
@DecryptString := GetProcAddress(LibHandle, "DecryptString");
end;
...


 
Anatoly Podgoretsky ©   (2004-01-18 14:50) [9]

If the function fails, the return value is NULL. To get extended error information, call GetLastError.


 
SammIk ©   (2004-01-18 14:54) [10]

Те ты хочешь загрузить текстовыи фаил?
Или ДЛЛ, но с расширением тхт?
В первом случае он будет ругаться.
А во втором, что-то ты сам в коде напартачил
Return Values
If the function succeeds, the return value is a handle to the module.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

И вообше, на врятли хендл будет меньше $40000


 
А. Владимир   (2004-01-18 15:14) [11]

Нет я хочу загрузить библиотеку. Но если вместо нее грузить не библиотеку он ругается (в XP). И всего-то надо отловить эту ошибку. Я могу понять, что она есть, но отловить не могу.


 
Islander   (2004-01-18 15:20) [12]

Владимир вот чего имеет в виду, как я понял:
в момент вызова LoadLibrary(PChar(AppPath + CryptPluginPath + PluginName)); винда ругается и говорит, что can"t load. Т.е. это происходит еще до того как функция LoadLibrary отработает. Так вот, я бы тоже с радостью узнал, как подавить сообщение Windows, о том, что это не та библиотека? А может, есть какая-нибудь функция, типа ISThisWin32Library?


 
DVM ©   (2004-01-18 15:25) [13]

Короче надо узнать является ли данный файл с произвольным расширением динамической библиотекой или нет. Мне тоже было бы интересно узнать как это сделать. Наверное проанализировав структуру файла можно найти байты, характерные для dll. Какие, документацию смотреть надо по структуре файла.


 
А. Владимир   (2004-01-18 16:09) [14]

Все всем спасобо я разобрался. Если вызвать функцию SafeLoadLibrary и передать ErrorMode = SEM_FAILCRITICALERRORS, то ошибка не возникает, а функция возвращает 0 при неудачной загрузке dll.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
1-93543
Mishenka
2004-01-17 02:39
2004.01.29
Как убрать с экрана панель задач?


1-93508
romeo
2004-01-11 12:55
2004.01.29
Как нарисовать линию с Pen.Style = psDash и Pen.Width > 1?


7-93713
Tik
2003-11-13 16:17
2004.01.29
Буфер .


1-93462
Beginer1
2004-01-15 20:13
2004.01.29
как получить список файлов в дириктории?


7-93708
otar
2003-11-12 17:57
2004.01.29
В windows 98 работает а с win2k нет




   Наверх