Как отловить msg 'нет доступа к съемному диску' и отреагировать своим msgbox ? - VB

Формулировка задачи:

Как отловить msg 'нет доступа к съемному диску' и отреагировать своим msgbox ?
                Dim result As Long
                Dim fileop As SHFILEOPSTRUCT
                Dim Сбой As Boolean
Sub Копирование()
            Const Путь As String = 'D:АВТО3 '
            Const Папка As String = 'Ар'
            Const ПутьСемный As String = 'G: '
            Dim Ширина As Integer
With fileop
   .wFunc = FO_COPY
   .pFrom = Путь & Папка & '6*.*' & vbNullChar & vbNullChar
   .pTo = Путь & Папка & '7 ' & vbNullChar & vbNullChar
   .fFlags = FOF_FILESONLY + FOF_NOCONFIRMATION
   .lpszProgressTitle = 'Резервное копирование' & vbNullChar & vbNullChar
End With
             result = SHFileOperation(fileop)
Результат
     If Сбой = True Then
       Exit Sub
     End If
 
            With fileop
               .wFunc = FO_COPY
               .pFrom = Путь & '*.*' & vbNullChar & vbNullChar
               .pTo = ПутьСемный & vbNullChar & vbNullChar
               .fFlags = FOF_FILESONLY + FOF_NOCONFIRMATION
               .lpszProgressTitle = 'Резервное копирование на съемный диск' & vbNullChar & vbNullChar
            End With
                          result = SHFileOperation(fileop)
Результат
     If Сбой = True Then
       Exit Sub
     End If
  MsgBox '  Резервное копирование прошло успешно !', , 'Отчет о резервном копировании.'
End Sub
 
Sub Результат()
         If result <> 0 Then        'Operation failed
            If result = 117 Then
              MsgBox ' Копирование прервано пользователем.', , 'Копирование прервано.'
             Сбой = True
            Else
              MsgBox '          ' & result, , 'Ошибка !'
             Сбой = True
            End If
         Else
            If fileop.fAnyOperationsAborted <> 0 Then
               MsgBox fileop.fAnyOperationsAborted, , 'Операция Прерывалась'
              Сбой = True
            End If
         End If
End Sub


textual

Код к задаче: «Как отловить msg 'нет доступа к съемному диску' и отреагировать своим msgbox ? - VB»

      Declare Function GetLastError Lib 'KERNEL32' () As Long
      Declare Function SHFileOperation Lib 'Shell32.dll' _
         Alias 'SHFileOperationA' (lpFileOp As SHFILEOPSTRUCT) As Long
                Dim result As Long
                Dim fileop As SHFILEOPSTRUCT
                Dim Сбой As Boolean
                Dim ErrorCode As Long
Sub Копирование()
            Const Путь As String = 'D:АВТО3 '
            Const Папка As String = 'Ар'
            Const ПутьСемный As String = 'G: '
            Dim Ширина As Integer
With fileop
   .wFunc = FO_COPY
   .pFrom = Путь & Папка & '6*.*' & vbNullChar & vbNullChar
   .pTo = Путь & Папка & '7 ' & vbNullChar & vbNullChar
   .fFlags = FOF_FILESONLY + FOF_NOCONFIRMATION
   .lpszProgressTitle = 'Резервное копирование' & vbNullChar & vbNullChar
End With
             result = SHFileOperation(fileop)
Результат
     If Сбой = True Then
       Exit Sub
     End If
 
            With fileop
               .wFunc = FO_COPY
               .pFrom = Путь & '*.*' & vbNullChar & vbNullChar
               .pTo = ПутьСемный & vbNullChar & vbNullChar
               .fFlags = FOF_FILESONLY + FOF_NOCONFIRMATION
               .lpszProgressTitle = 'Резервное копирование на съемный диск' & vbNullChar & vbNullChar
            End With
                          result = SHFileOperation(fileop)
Результат
     If Сбой = True Then
       Exit Sub
     End If
  MsgBox '  Резервное копирование прошло успешно !', , 'Отчет о резервном копировании.'
End Sub
 
Sub Результат()
                           ErrorCode = GetLastError
                                   If ErrorCode <> 0 Then
                                       MsgBox 'GetCurrentProcess error==' & GetLastError
                                   End If
         If result <> 0 Then        'Operation failed
            If result = 117 Then
              MsgBox ' Копирование прервано пользователем.', , 'Копирование прервано.'
             Сбой = True
            Else
              MsgBox '          ' & result, , 'Ошибка !'
             Сбой = True
            End If
         Else
            If fileop.fAnyOperationsAborted <> 0 Then
               MsgBox fileop.fAnyOperationsAborted, , 'Операция Прерывалась'
              Сбой = True
            End If
         End If
End Sub
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

6   голосов, оценка 4.167 из 5

Источник