На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
Закрыто Krid 12-08-2011: Введите причину закрытия темы здесь
  
> Проверить является ли приложение образом программы для Windows NT.
    Подскажите пожалуйста. Как избежать вот этого сообщения:
    При загрузке LoadLibrary иногда выскакивает сообщение, как-нибудь можно проверить файл, чтобы не вызывать эту функцию.
    <<Приложение или библиотека C:\файл.exe не является образом программы для Windows NT. Проверьте назначение установочного диска.>>
    Заранее спасибо.
      А если заключить вызов функции LadLibrary в блок
      try
      LoadLirary(...)
      except
      //а здесь обрабтчик исключения, если таковое появится
      end;
        2Lexus: try/except здесь бесполезен, т.к. LoadLibrary - функция Windows, а не Delphi, там свои SEH'и расставлены

        2NikFel: нужно использовать LoadLibraryEx с флагом "LOAD_LIBRARY_AS_DATAFILE" и дальше смотреть какой результат вернулся
          а можно попробовать SHGetFileInfo c SHGFI_EXETYPE
            Выдержка:
            ...
            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 - если нет.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:
            Закрыто Krid 12-08-2011: Введите причину закрытия темы здесь


            Рейтинг@Mail.ru
            [ Script execution time: 0,0723 ]   [ 16 queries used ]   [ Generated: 27.06.25, 00:13 GMT ]