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" кажется, предоставляет эту обертку сразу.