Функция FindExecutable

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Неверный формат файла

Параметры

lpFile
Имя файла, для которого ищется связанная с этим файлом программа
lpDirectory
Полный путь к папке, используемому по умолчанию
lpResult
Строковый буфер, заполняемый именем программы для параметра lpFile. Буфер нужно заранее выделить достаточной длины

Пример

' Ищем программу, связанную с текстовый файлом
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

Смотри также

ShellExecute

Категория

Оболочка