Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программа не выходит !

5.2K
28 ноября 2006 года
SerMax
96 / / 04.11.2006
Есть программа, которая подключает библиотеку :

 
Код:
hinstDLL := LoadLibrary(pchar(dir+'dll_change.dll'));
if hinstDLL<32 then
 begin
  ShowMessage('ошибка загрузки библиотеки ');
  Close;  // как варианты имя_формы.close.     // exit
 end
else
 ........


Если выдаётся это сообщение, то программа всё равно пускается. Хотя мне надо ,чтобы она завершила свою работу.
Сама программа пускается и сразу прячется в сис.трей. Может что-нибудь с этим связано ? :/
257
28 ноября 2006 года
kosfiz
1.6K / / 18.09.2005
вместо Close что-нибудь из этого:
 
Код:
halt(0);
или
ExitProcess(0);
или
Application.Terminate;
11K
28 ноября 2006 года
_io_lock
73 / / 05.10.2006
Или попробуй FreeLibrary(hinstDLL) - хуже все равно не будет :D
257
28 ноября 2006 года
kosfiz
1.6K / / 18.09.2005
SerMax
а почему именно:
 
Код:
if hinstDLL<32

ведь вызов LoadLibrary неудачен, если hinstDLL=0.
5.2K
28 ноября 2006 года
SerMax
96 / / 04.11.2006
Цитата: kosfiz
SerMax
а почему именно:
 
Код:
if hinstDLL<32

ведь вызов LoadLibrary неудачен, если hinstDLL=0.



взято либо из MSDN, либо из другой программы. Да и вроде сам чтиал ,что так надо. :/ .
а при

 
Код:
halt(0);

вызывется обработчик OnCLose формы ?? Потому что
 
Код:
FreeLibrary(hinstDLL)

описано именно там.
А так верно подсказали, работает ! :).

P.S. очень нравится этот форум. Помытсья не успел, как в ветке уже дискуссия пошла :) .Супер !
257
28 ноября 2006 года
kosfiz
1.6K / / 18.09.2005
[quote=SerMax]взято либо из MSDN, либо из другой программы. Да и вроде сам чтиал ,что так надо.[/quote]
вот цитата из msdn:
Цитата:

LoadLibrary

The LoadLibrary function maps the specified executable module into the address space of the calling process.

For additional load options, use the LoadLibraryEx function.

HMODULE LoadLibrary(
LPCTSTR lpFileName
);

Parameters
lpFileName
[in] Pointer to a null-terminated string that names the executable module (either a .dll or .exe file). The name specified is the file name of the module and is not related to the name stored in the library module itself, as specified by the LIBRARY keyword in the module-definition (.def) file.
If the string specifies a path but the file does not exist in the specified directory, the function fails. When specifying a path, be sure to use backslashes (\), not forward slashes (/).

If the string does not specify a path, the function uses a standard search strategy to find the file. See the Remarks for more information.

Return Values
If the function succeeds, the return value is a handle to the module.
If the function fails, the return value is NULL.


[quote=SerMax]а при

 
Код:
halt(0);

вызывется обработчик OnCLose формы ?? Потому что
 
Код:
FreeLibrary(hinstDLL)

описано именно там.[/quote]
нет. к тому же если вызов LoadLibrary неудачен, то не вижу смысла вызывать FreeLibrary(вызов этой функции нужен если вызов LoadLibrary удался).
5.2K
28 ноября 2006 года
SerMax
96 / / 04.11.2006
LoadLibrary
Описание

function LoadLibrary(LibFileName: PChar): THandle;

Загpужает поименованный модуль библиотеки.
Паpаметpы
LibFileName: Имя файла библиотеки (заканчивающееся пустым символом).
Возвpащаемое значение

В случае успешного завеpшения - идентификатоp экземпляpа модуля библиотеки (значение, больше 32); если нет, то его значение меньше 32 и является одним из следующих: (0) нет памяти; (5) попытка связать задачу; (11) невеpный файл EXE; (12) пpикладная задача из OS/2; (13) пpикладная задача из DOS 4.0; (14) невеpный тип EXE; (15) незащищенный pежим.

и как думаете, откуда взято ? С самого
codenet.ru

:)
257
28 ноября 2006 года
kosfiz
1.6K / / 18.09.2005
хм, там в описание еще вот это есть:
Цитата:
Windows Me/98/95: If you are using LoadLibrary to load a module that contains a resource whose numeric identifier is greater than 0x7FFF, LoadLibrary fails. If you are attempting to load a 16-bit DLL directly from 32-bit code, LoadLibrary fails. If you are attempting to load a DLL whose subsystem version is greater than 4.0, LoadLibrary fails. If your DllMain function tries to call the Unicode version of a function, LoadLibrary fails.

5.2K
28 ноября 2006 года
SerMax
96 / / 04.11.2006
Ну работает же, и я как-то на это не сильно жалуюсь :) . За информацию спасибо !
302
29 ноября 2006 года
Sagittarius
648 / / 12.04.2003
Цитата: kosfiz
вот цитата из msdn


MSDN конечно хорошо, но красивее и понятнее будет пользоваться константой INVALID_HANDLE_VALUE, о которой говорится в хелпе по WIn32 API. :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог