Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, _ ByVal lpDirectory As String, _ ByVal lpResult As String) As Long
FindExecutable находит имя приложения, связанного с заданным файлом. Типы файлов связаны с приложениями в реестре. Например, текстовые файлы связаны с Блокнотом. Данная функция работает только с файлами документов. Для исполняемых файлов используйте AssocQueryString
В успешном случае возвращается значение, превышающее 32. В случае ошибки возвращается значение меньшее или равное 32. Возможны следующие значения ошибок:
0 | Недостаточно памяти или ресурсов |
31 | Нет ассоциаций с данным типом файла |
ERROR_FILE_NOT_FOUND | Указанный файл не найден |
ERROR_PATH_NOT_FOUND | Указанный путь не найден |
ERROR_BAD_FORMAT | Неверный формат файла |
' Ищем программу, связанную с текстовый файлом Dim retval As Integer, s2 As String Const sFile = "C:\windows\readme.txt" Const MAX_FILENAME_LEN = 260 ' Существует ли файл? If Dir(sFile) = "" Or sFile = "" Then MsgBox "Файл не найден!", vbCritical Exit Sub End If ' Создаем буфер s2 = String(MAX_FILENAME_LEN, 32) ' Получаем имя программы, связанной с файлом retval = FindExecutable(sFile, vbNullString, s2) If retval > 32 Then MsgBox Left$(s2, InStr(s2, Chr$(0)) - 1) Else MsgBox "Не найдено связанной программы !" End If