golang: запустите приложение по умолчанию для pdf-файла в windows

Я хотел бы открыть PDF-файл в файловой системе с помощью приложения по умолчанию. Как я могу это сделать? Из командной строки я просто пишу имя файла pdf, и приложение открывается (с запрошенным файлом). Когда я пытаюсь использовать exec.Command() Я получаю ошибку (неудивительно) exec: "foo.pdf": executable file not found in %PATH%.

package main

import (
    "log"
    "os/exec"
)

func main() {
    cmd := exec.Command("foo.pdf")
    err := cmd.Start()
    if err != nil {
        log.Fatal(err)
    }
    err = cmd.Wait()
    if err != nil {
        log.Fatal(err)
    }

}

2 ответов


вы должны запустить cmd /C start foo.pdf. Это позволит команде начать найти правильный исполняемый файл для вас.

cmd := exec.Command("cmd", "/C start path_to_foo.pdf")

exec.Command("rundll32.exe", "url.dll,FileProtocolHandler", "path_to_foo.pdf")

также должен справиться с этим.

обратите внимание, что по-прежнему правильный способ сделать это-использовать оболочку C вокруг ShellExecute() функция API экспортируется shell32.dll и библиотека"w32" кажется, предоставляет эту обертку сразу.