GIS-LAB

Географические информационные системы и дистанционное зондирование

Открытие файла ассоциированным приложением с помощью Avenue

Скрипт на Avenue использующий системные ассоциации типов файлов

Обсудить в форуме Комментариев — 4

Задача: Открыть с помощью скрипта Avenue с помощью инструмента горячей связи (hotlink) документы MS Word, Excel и любые другие, для которых в операционной системе настроена ассоциированная программа (txt - Notepad, dbf - Excel и т.д.). Наличие ассоциации означает, что операционная система "знает", какой программой открывать файл данного типа.

Для использования связи такого типа, необходимо создать следующий скрипт и подключить его как User Script к теме и полю, в котором будет прописан полный путь к нужному файлу.

Содержание скрипта:

'fname - полный путь к файлу типа Filename
fname = SELF
shellDLL = DLL.Make(FileName.FindInSystemSearchPath("SHELL32.dll"))
execProc = DLLProc.Make(shellDLL, "ShellExecuteA", #DLLPROC_TYPE_INT32, {#DLLPROC_TYPE_INT32, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_INT32})
execProc.Call({0,"OPEN",fname,"","",4})

Данный способ достаточно универсален, но для некоторых типов файлов, точнее программ с ними ассоциированных, не работает. Примером является Google Earth 4 и ассоциируемые с ними файлы kml и kmz. Чтобы решить эту проблему, необходимо в свойствах файла googleearth.exe (Properties\Compatibility\Run this program in compatibility mode) в параметрах совместимости выбрать систему Windows NT. Иначе, возможно появление следующего сообщения об ошибке:

error

Еще одним способом борьбы с ошибками открытия ассоциированных программ является предварительное открытие их, перед использованием расширения.

Обсудить в форуме Комментариев — 4

Последнее обновление: September 09 2021

Дата создания: 04.03.2005
Автор(ы): Максим Дубинин