2015-06-22 2 views
0

Я пишу приложение VBA, которое рекурсивно зацикливает большое количество каталогов. Я использую API FindFirstFile для достижения этого, так как он обеспечивает существенное повышение производительности над FileSystemObject.Удаление предупреждения при использовании DeleteFile API

Чтобы полностью удалить FSO из моего кода, мне нужна программа для удаления файлов. Это привлекло внимание DeleteFile. Хотя у меня есть работа - см. Ниже код - он показывает предупреждение пользователям, спрашивая, хотите ли они удалить файл. Мне нужно удалить это предупреждение, как это возможно с FSO. Application.DisplayAlerts = False не работает в этом случае - скорее всего, потому что это вызов API.

Есть ли способ удалить оповещение?

Private Type SHFILEOPSTRUCT 
    hWnd As Long 
    wFunc As Long 
    pFrom As String 
    pTo As String 
    fFlags As Integer 
    fAborted As Boolean 
    hNameMaps As Long 
    sProgress As String 
End Type 

Private Const FO_DELETE = &H3 

Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long 
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long 

Private Sub TestDelete() 
Dim SHDirOp As SHFILEOPSTRUCT 

With SHDirOp 
    .wFunc = FO_DELETE 
    '.pFrom is file to be deleted, copied, or moved should be 
    .pFrom = "My Path Here" 
    'you might also look at adding 
End With 

'struct (Type) is now properly initialized 
'call the function 
SHFileOperation SHDirOp 

End Sub 
+0

Вы пытались «убить» FileName.txt «это работает для меня без предупреждений, без API. – Ahmad

ответ

0

Существует несколько вариантов SHFILEOPSTRUCT.fFlags, которые вы хотите рассмотреть. Вы запрашиваете FOF_NOCONFIRMATION, & H10. Вероятно, вы захотите еще немного, например FOF_ALLOWUNDO, FOF_SILENT, FOF_NOERRORUI, это не ясно из вопроса. Проверьте the docs.