Используя скрипт AutoIt, следующее должно выполнить то, что вы хотите:
$FIREWORKS = "C:/Program Files/Fireworks.exe" $NORMALVWR = "C:/WindowsPictureViewer.exe" If $CmdLine[0] > 0 Then $toRun = "" $fExt = StringRight($CmdLine[1], 7) ; First, we set $toRun as the proper target program to run. If StringLen($CmdLine[1]) >= 7 And _ StringRight($fExt, 4) = ".png" And _ StringLeft(StringRight($fExt, 7), 3) = ".fw" Then $toRun = $FIREWORKS Else $toRun = $NORMALVWR EndIf ; Next, we append all command line arguments (with a space before each one). For $i = 1 To $CmdLine[0] $toRun &= ' "' & $CmdLine[$i] & '"' ; We surround each with quotation marks. Next ; Finally, run the command in the current working directory. Run($toRun, @WorkingDir) ; Since the Run() function is asynchronous, this program should close right after. EndIf
Чтобы это работало в вашем случае, вам нужно изменить эти константы вверху на соответствующие исполняемые файлы, которые вы хотите запустить. Затем установите AutoIt и скомпилируйте скрипт в файл .EXE. Поместите его в обычное место и настройте Windows для открытия файлов .PNG с этим исполняемым файлом.
Я еще не тестировал этот код, но, похоже, он должен работать нормально. Для справки, скомпилированная программа сделает следующее:
Проверьте, заканчивается ли первый аргумент (если он существует) в .fw.png (предполагается, что вы запускаете только исполняемый файл с .PNG для начала). Если это так, запускается исполняемый файл Fireworks, в противном случае запускается обычный просмотрщик.
Все аргументы командной строки затем снова добавляются в качестве аргументов в соответствующее приложение.
Приложение вызывается через
Run()
функцию AutoIt в текущем рабочем каталоге.
Если заинтересованным людям достаточно, я могу создать полную программу для любого произвольного набора (вложенных) расширений файлов.