Declare Function SetErrorMode Lib "kernel32" _ (ByVal uMode As Long) As Long
SetErrorMode определяет, будет ли система обрабатывать определенные виды серьезных ошибок или предоставляет эту задачу приложению.
Возвращаемое значение получает предыдущее состояние флага обработки ошибки
0 | Система выводит собственные окна об ошибках |
Const SEM_FAILCRITICALERRORS = &H1 | Система не выводит свое окно об ошибке. Вместо этого система посылавет ошибку в вызывающее приложение |
Const SEM_NOALIGNMENTFAULTEXCEPT = &H4 | The system automatically fixes memory alignment faults and makes them invisible to the application. It does this for the calling process and any descendant processes. This feature is only supported by certain processor architectures. For more information, see the Remarks section. After this value is set for a process, subsequent attempts to clear the value are ignored. |
Const SEM_NOGPFAULTERRORBOX = &H2 | The system does not display the general-protection-fault message box. This flag should only be set by debugging applications that handle general protection (GP) faults themselves with an exception handler. |
Const SEM_NOOPENFILEERRORBOX = &H8000& | The system does not display a message box when it fails to find a file. Instead, the error is returned to the calling process. |
' Создаем функцию проверки наличия флоппи-диска в дисководе Private Function IsFloppyReady(sDrive As String) As Boolean On Local Error Resume Next Dim oldErrMode As Long ' Подавляем вывод системного сообщения об ошибки (нет флоппи в дисководе) oldErrMode = SetErrorMode(SEM_FAILCRITICALERRORS) ' Пытаемя обратиться к дисководу при помощи Dir IsFloppyReady = Dir(sDrive) > "" ' Возвращаем все как было Call SetErrorMode(oldErrMode) Call SetErrorMode(0) On Local Error GoTo 0 End Function ' Вызываем функцию для проверки диска Dim success As Boolean success = IsFloppyReady("A:")