github.com/remoteit/go-ole@v1.2.7/_example/itunes/itunes.go (about) 1 // +build windows 2 3 package main 4 5 import ( 6 "log" 7 "os" 8 "strings" 9 10 "github.com/gonuts/commander" 11 ole "github.com/remoteit/go-ole" 12 "github.com/remoteit/go-ole/oleutil" 13 ) 14 15 func iTunes() *ole.IDispatch { 16 ole.CoInitialize(0) 17 unknown, err := oleutil.CreateObject("iTunes.Application") 18 if err != nil { 19 log.Fatal(err) 20 } 21 itunes, err := unknown.QueryInterface(ole.IID_IDispatch) 22 if err != nil { 23 log.Fatal(err) 24 } 25 return itunes 26 } 27 28 func main() { 29 command := &commander.Command{ 30 UsageLine: os.Args[0], 31 Short: "itunes cmd", 32 } 33 command.Subcommands = []*commander.Command{} 34 for _, name := range []string{"Play", "Stop", "Pause", "Quit"} { 35 command.Subcommands = append(command.Subcommands, &commander.Command{ 36 Run: func(cmd *commander.Command, args []string) error { 37 _, err := oleutil.CallMethod(iTunes(), name) 38 return err 39 }, 40 UsageLine: strings.ToLower(name), 41 }) 42 } 43 err := command.Dispatch(os.Args[1:]) 44 if err != nil { 45 log.Fatal(err) 46 } 47 }