github.com/scalingdata/go-ole@v1.2.0/oleutil/oleutil.go (about) 1 package oleutil 2 3 import ole "github.com/go-ole/go-ole" 4 5 // ClassIDFrom retrieves class ID whether given is program ID or application string. 6 func ClassIDFrom(programID string) (classID *ole.GUID, err error) { 7 return ole.ClassIDFrom(programID) 8 } 9 10 // CreateObject creates object from programID based on interface type. 11 // 12 // Only supports IUnknown. 13 // 14 // Program ID can be either program ID or application string. 15 func CreateObject(programID string) (unknown *ole.IUnknown, err error) { 16 classID, err := ole.ClassIDFrom(programID) 17 if err != nil { 18 return 19 } 20 21 unknown, err = ole.CreateInstance(classID, ole.IID_IUnknown) 22 if err != nil { 23 return 24 } 25 26 return 27 } 28 29 // GetActiveObject retrieves active object for program ID and interface ID based 30 // on interface type. 31 // 32 // Only supports IUnknown. 33 // 34 // Program ID can be either program ID or application string. 35 func GetActiveObject(programID string) (unknown *ole.IUnknown, err error) { 36 classID, err := ole.ClassIDFrom(programID) 37 if err != nil { 38 return 39 } 40 41 unknown, err = ole.GetActiveObject(classID, ole.IID_IUnknown) 42 if err != nil { 43 return 44 } 45 46 return 47 } 48 49 // CallMethod calls method on IDispatch with parameters. 50 func CallMethod(disp *ole.IDispatch, name string, params ...interface{}) (result *ole.VARIANT, err error) { 51 return disp.InvokeWithOptionalArgs(name, ole.DISPATCH_METHOD, params) 52 } 53 54 // MustCallMethod calls method on IDispatch with parameters or panics. 55 func MustCallMethod(disp *ole.IDispatch, name string, params ...interface{}) (result *ole.VARIANT) { 56 r, err := CallMethod(disp, name, params...) 57 if err != nil { 58 panic(err.Error()) 59 } 60 return r 61 } 62 63 // GetProperty retrieves property from IDispatch. 64 func GetProperty(disp *ole.IDispatch, name string, params ...interface{}) (result *ole.VARIANT, err error) { 65 return disp.InvokeWithOptionalArgs(name, ole.DISPATCH_PROPERTYGET, params) 66 } 67 68 // MustGetProperty retrieves property from IDispatch or panics. 69 func MustGetProperty(disp *ole.IDispatch, name string, params ...interface{}) (result *ole.VARIANT) { 70 r, err := GetProperty(disp, name, params...) 71 if err != nil { 72 panic(err.Error()) 73 } 74 return r 75 } 76 77 // PutProperty mutates property. 78 func PutProperty(disp *ole.IDispatch, name string, params ...interface{}) (result *ole.VARIANT, err error) { 79 return disp.InvokeWithOptionalArgs(name, ole.DISPATCH_PROPERTYPUT, params) 80 } 81 82 // MustPutProperty mutates property or panics. 83 func MustPutProperty(disp *ole.IDispatch, name string, params ...interface{}) (result *ole.VARIANT) { 84 r, err := PutProperty(disp, name, params...) 85 if err != nil { 86 panic(err.Error()) 87 } 88 return r 89 }