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  }