Открытие файла ассоциированным приложением с помощью Avenue
по адресу http://gis-lab.info/qa/hotlink-anytype.html
Скрипт на Avenue использующий системные ассоциации типов файлов.
Задача: Открыть с помощью скрипта 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. Иначе, возможно появление следующего сообщения об ошибке:
Еще одним способом борьбы с ошибками открытия ассоциированных программ является предварительное открытие их, перед использованием расширения.