
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.198] |
![]() |
|
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста. Как избежать вот этого сообщения:
При загрузке LoadLibrary иногда выскакивает сообщение, как-нибудь можно проверить файл, чтобы не вызывать эту функцию. <<Приложение или библиотека C:\файл.exe не является образом программы для Windows NT. Проверьте назначение установочного диска.>> Заранее спасибо. |
Сообщ.
#2
,
|
|
|
А если заключить вызов функции LadLibrary в блок
try LoadLirary(...) except //а здесь обрабтчик исключения, если таковое появится end; |
Сообщ.
#3
,
|
|
|
2Lexus: try/except здесь бесполезен, т.к. LoadLibrary - функция Windows, а не Delphi, там свои SEH'и расставлены
2NikFel: нужно использовать LoadLibraryEx с флагом "LOAD_LIBRARY_AS_DATAFILE" и дальше смотреть какой результат вернулся |
Сообщ.
#4
,
|
|
|
а можно попробовать SHGetFileInfo c SHGFI_EXETYPE
|
Сообщ.
#5
,
|
|
|
Выдержка:
... LOAD_LIBRARY_AS_DATAFILE Если это значение используется, система преобразует и проецирует данные файла в виртуальное адресное пространство вызывающего процесса, так, как если бы он был файлом данных. Ничего не делается, чтобы исполнить код или подготовиться к исполнению отображаемого файла. Поэтому, Вы не можете вызывать функции подобно GetModuleHandle или GetProcAddress для этой DLL. Используйте этот флажок тогда, когда хотите загрузить DLL только для того, чтобы извлечь сообщения или ресурсы из нее. ... Чтобы разрешать или запретить сообщения об ошибке, отображаемые на экране загрузчиком в ходе загрузки DLL, используйте функцию SetErrorMode. . взято с Функция LoadLibraryEx Обработка ошибок с помощью функции SetErrorMode Некоторые ошибки, такие как, например, "Устройство не готово" (при записи информации на дискету, которая защищена от записи), вызывают окна сообщений Windows, для информирования пользователя о случившейся ошибке. Приложение может обрабатывать такие ошибки, с помощью использования функции SetErrorMode: SetErrorMode (uMode); В данную функцию можно передавать любое из перечисленных в табл. 1.11 значение параметра uMode. SEM_FAILCRITICALERRORS При установке данного значения операционная система не отображает окно сообщения об ошибке. Вместо этого, операционная система отправляет данную ошибку вызвавшему ее процессу взято с Глава 5. Win32 API Добавлено SetErrorMode Описание function SetErrorMode(Mode: Word): Bool; Опpеделяет, будет ли Windows отобpажать блок ошибок пpи ошибках DOS по пpеpыванию INT 24H. Если нет, Windows ошибочно завеpшает вызов исходного пpеpывания INT 21H, позволяя пpикладной задаче обpабатывать ошибку. Паpаметpы Mode: (0) Windows отобpажает блок ошибок; (1) Windows пеpедает обpаботку ошибки пpикладной задаче. Возвpащаемое значение Не нуль, если установлено; 0 - если нет. |