本文整理匯總了Golang中github.com/go-ole/go-ole/oleutil.MustGetProperty函數的典型用法代碼示例。如果您正苦於以下問題:Golang MustGetProperty函數的具體用法?Golang MustGetProperty怎麽用?Golang MustGetProperty使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了MustGetProperty函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: GetProperty
//get Property as interface.
func GetProperty(idisp *ole.IDispatch, args ...string) (ret interface{}, err error) {
defer Except("GetProperty", &err)
argnum := len(args)
if argnum == 0 {
ret = VARIANT{oleutil.MustGetProperty(idisp, "Value")}.Value()
} else {
maxi := argnum - 1
for i := 0; i < maxi && err == nil; i++ {
idisp = oleutil.MustGetProperty(idisp, args[i]).ToIDispatch()
defer DoFuncs(idisp.Release)
}
//get multi-Property
argv := args[maxi]
if strings.IndexAny(argv, ",") != -1 {
sl := []string{}
for _, key := range strings.Split(argv, ",") {
sl = append(sl, key+":"+String(VARIANT{oleutil.MustGetProperty(idisp, key)}.Value()))
}
ret = strings.Join(sl, ", ")
} else {
ret = VARIANT{oleutil.MustGetProperty(idisp, argv)}.Value()
}
}
return
}
示例2: PutProperty
//put Property.
func PutProperty(idisp *ole.IDispatch, args ...interface{}) (err error) {
defer Except("PutProperty", &err)
argnum := len(args)
if argnum == 1 {
oleutil.MustPutProperty(idisp, "Value", args[0])
} else if argnum > 1 {
maxi := argnum - 2
for i := 0; i < maxi && err == nil; i++ {
idisp = oleutil.MustGetProperty(idisp, args[i].(string)).ToIDispatch()
defer DoFuncs(idisp.Release)
}
//put multi-Property
if argv, ok := args[argnum-1].(map[string]interface{}); ok {
idisp = oleutil.MustGetProperty(idisp, args[maxi].(string)).ToIDispatch()
defer DoFuncs(idisp.Release)
for key, val := range argv {
oleutil.MustPutProperty(idisp, key, val)
}
} else {
oleutil.MustPutProperty(idisp, args[maxi].(string), args[argnum-1])
}
} else {
err = errors.New("args is empty")
}
return
}
示例3: writeExample
func writeExample(excel, workbooks *ole.IDispatch, filepath string) {
// ref: https://msdn.microsoft.com/zh-tw/library/office/ff198017.aspx
// http://stackoverflow.com/questions/12159513/what-is-the-correct-xlfileformat-enumeration-for-excel-97-2003
const xlExcel8 = 56
workbook := oleutil.MustCallMethod(workbooks, "Add", nil).ToIDispatch()
defer workbook.Release()
worksheet := oleutil.MustGetProperty(workbook, "Worksheets", 1).ToIDispatch()
defer worksheet.Release()
cell := oleutil.MustGetProperty(worksheet, "Cells", 1, 1).ToIDispatch()
oleutil.PutProperty(cell, "Value", 12345)
cell.Release()
activeWorkBook := oleutil.MustGetProperty(excel, "ActiveWorkBook").ToIDispatch()
defer activeWorkBook.Release()
os.Remove(filepath)
// ref: https://msdn.microsoft.com/zh-tw/library/microsoft.office.tools.excel.workbook.saveas.aspx
oleutil.MustCallMethod(activeWorkBook, "SaveAs", filepath, xlExcel8, nil, nil).ToIDispatch()
//time.Sleep(2 * time.Second)
// let excel could close without asking
// oleutil.PutProperty(workbook, "Saved", true)
// oleutil.CallMethod(workbook, "Close", false)
}
示例4: readExample
func readExample(fileName string, excel, workbooks *ole.IDispatch) {
workbook, err := oleutil.CallMethod(workbooks, "Open", fileName)
if err != nil {
log.Fatalln(err)
}
defer workbook.ToIDispatch().Release()
sheets := oleutil.MustGetProperty(excel, "Sheets").ToIDispatch()
sheetCount := (int)(oleutil.MustGetProperty(sheets, "Count").Val)
fmt.Println("sheet count=", sheetCount)
sheets.Release()
worksheet := oleutil.MustGetProperty(workbook.ToIDispatch(), "Worksheets", 1).ToIDispatch()
defer worksheet.Release()
for row := 1; row <= 2; row++ {
for col := 1; col <= 5; col++ {
cell := oleutil.MustGetProperty(worksheet, "Cells", row, col).ToIDispatch()
val, err := oleutil.GetProperty(cell, "Value")
if err != nil {
break
}
fmt.Printf("(%d,%d)=%+v toString=%s\n", col, row, val.Value(), val.ToString())
cell.Release()
}
}
}
示例5: Pick
func (mso *MSO) Pick(workx string, id interface{}) (ret *ole.IDispatch, err error) {
defer Except("Pick", &err)
if id_int, ok := id.(int); ok {
ret = oleutil.MustGetProperty(mso.IdExcel, workx, id_int).ToIDispatch()
} else if id_str, ok := id.(string); ok {
ret = oleutil.MustGetProperty(mso.IdExcel, workx, id_str).ToIDispatch()
} else {
err = errors.New("sheet id incorrect")
}
return
}
示例6: WorkBooks
func (mso *MSO) WorkBooks() (wbs WorkBooks) {
num := mso.CountWorkBooks()
for i := 1; i <= num; i++ {
wbs = append(wbs, WorkBook{oleutil.MustGetProperty(mso.IdExcel, "WorkBooks", i).ToIDispatch(), mso})
}
return
}
示例7: Sheets
func (mso *MSO) Sheets() (sheets []Sheet) {
num := mso.CountSheets()
for i := 1; i <= num; i++ {
sheet := Sheet{oleutil.MustGetProperty(mso.IdExcel, "WorkSheets", i).ToIDispatch()}
sheets = append(sheets, sheet)
}
return
}
示例8: main
func main() {
ole.CoInitialize(0)
unknown, err := oleutil.CreateObject("WMPlayer.OCX")
if err != nil {
log.Fatal(err)
}
wmp := unknown.MustQueryInterface(ole.IID_IDispatch)
collection := oleutil.MustGetProperty(wmp, "MediaCollection").ToIDispatch()
list := oleutil.MustCallMethod(collection, "getAll").ToIDispatch()
count := int(oleutil.MustGetProperty(list, "count").Val)
for i := 0; i < count; i++ {
item := oleutil.MustGetProperty(list, "item", i).ToIDispatch()
name := oleutil.MustGetProperty(item, "name").ToString()
sourceURL := oleutil.MustGetProperty(item, "sourceURL").ToString()
fmt.Println(name, sourceURL)
}
}
示例9: Initialize
func Initialize(opt ...Option) (mso *MSO) {
ole.CoInitialize(0)
app, _ := oleutil.CreateObject("Excel.Application")
excel, _ := app.QueryInterface(ole.IID_IDispatch)
wbs := oleutil.MustGetProperty(excel, "WorkBooks").ToIDispatch()
ver, _ := strconv.ParseFloat(oleutil.MustGetProperty(excel, "Version").ToString(), 64)
if len(opt) == 0 {
opt = []Option{{"Visible": true, "DisplayAlerts": true, "ScreenUpdating": true}}
}
mso = &MSO{Option: opt[0], IuApp: app, IdExcel: excel, IdWorkBooks: wbs, Version: ver}
mso.SetOption(1)
//XlFileFormat Enumeration: http://msdn.microsoft.com/en-us/library/office/ff198017%28v=office.15%29.aspx
mso.FILEFORMAT = map[string]int{"txt": -4158, "csv": 6, "html": 44}
return
}
示例10: Name
func (sheet Sheet) Name(args ...string) (name string) {
defer Except("", nil)
if len(args) == 0 {
name = oleutil.MustGetProperty(sheet.Idisp, "Name").ToString()
} else {
name = args[0]
oleutil.MustPutProperty(sheet.Idisp, "Name", name)
}
return
}
示例11: AddSheet
func (mso *MSO) AddSheet(wb *ole.IDispatch, args ...string) (Sheet, error) {
sheets := oleutil.MustGetProperty(wb, "Sheets").ToIDispatch()
defer sheets.Release()
_sheet, err := oleutil.CallMethod(sheets, "Add")
sheet := Sheet{_sheet.ToIDispatch()}
if args != nil {
sheet.Name(args...)
}
sheet.Select()
return sheet, err
}
示例12: main
func main() {
ole.CoInitialize(0)
unknown, _ := oleutil.CreateObject("Excel.Application")
excel, _ := unknown.QueryInterface(ole.IID_IDispatch)
oleutil.PutProperty(excel, "Visible", true)
workbooks := oleutil.MustGetProperty(excel, "Workbooks").ToIDispatch()
workbook := oleutil.MustCallMethod(workbooks, "Add", nil).ToIDispatch()
worksheet := oleutil.MustGetProperty(workbook, "Worksheets", 1).ToIDispatch()
cell := oleutil.MustGetProperty(worksheet, "Cells", 1, 1).ToIDispatch()
oleutil.PutProperty(cell, "Value", 12345)
time.Sleep(2000000000)
oleutil.PutProperty(workbook, "Saved", true)
oleutil.CallMethod(workbook, "Close", false)
oleutil.CallMethod(excel, "Quit")
excel.Release()
ole.CoUninitialize()
}
示例13: main
func main() {
ole.CoInitialize(0)
unknown, _ := oleutil.CreateObject("Agent.Control.1")
agent, _ := unknown.QueryInterface(ole.IID_IDispatch)
oleutil.PutProperty(agent, "Connected", true)
characters := oleutil.MustGetProperty(agent, "Characters").ToIDispatch()
oleutil.CallMethod(characters, "Load", "Merlin", "c:\\windows\\msagent\\chars\\Merlin.acs")
character := oleutil.MustCallMethod(characters, "Character", "Merlin").ToIDispatch()
oleutil.CallMethod(character, "Show")
oleutil.CallMethod(character, "Speak", "こんにちわ世界")
time.Sleep(4000000000)
}
示例14: main
func main() {
ole.CoInitialize(0)
unknown, _ := oleutil.CreateObject("InternetExplorer.Application")
ie, _ := unknown.QueryInterface(ole.IID_IDispatch)
oleutil.CallMethod(ie, "Navigate", "http://www.google.com")
oleutil.PutProperty(ie, "Visible", true)
for {
if oleutil.MustGetProperty(ie, "Busy").Val == 0 {
break
}
}
time.Sleep(1e9)
document := oleutil.MustGetProperty(ie, "document").ToIDispatch()
window := oleutil.MustGetProperty(document, "parentWindow").ToIDispatch()
// set 'golang' to text box.
oleutil.MustCallMethod(window, "eval", "document.getElementsByName('q')[0].value = 'golang'")
// click btnG.
btnG := oleutil.MustCallMethod(window, "eval", "document.getElementsByName('btnG')[0]").ToIDispatch()
oleutil.MustCallMethod(btnG, "click")
}
示例15: main
func main() {
cwd, _ := os.Getwd()
artworkjpg := filepath.Join(cwd, "artwork.jpg")
gc := gntp.NewClient()
gc.AppName = "nowplaying"
gc.Register([]gntp.Notification{{"default", "", true}})
ole.CoInitialize(0)
unk, err := oleutil.CreateObject("iTunes.Application")
if err != nil {
log.Fatal(err)
}
unk.AddRef()
dsp := unk.MustQueryInterface(ole.IID_IDispatch)
prev := ""
for {
func() {
defer func() {
recover()
}()
track := oleutil.MustGetProperty(dsp, "CurrentTrack").ToIDispatch()
if track != nil {
name := oleutil.MustGetProperty(track, "Name").ToString()
artist := oleutil.MustGetProperty(track, "artist").ToString()
album := oleutil.MustGetProperty(track, "Album").ToString()
curr := fmt.Sprintf("%s/%s\n%s", name, artist, album)
if curr != prev {
prev = curr
artwork := oleutil.MustGetProperty(track, "Artwork").ToIDispatch()
item := oleutil.MustGetProperty(artwork, "Item", 1).ToIDispatch()
icon := ""
if item != nil {
_, err = oleutil.CallMethod(item, "SaveArtworkToFile", artworkjpg)
if err != nil {
log.Print(err)
} else {
icon = artworkjpg
}
}
log.Print(curr)
err = gc.Notify(&gntp.Message{
Event: "default",
Title: "iTunes",
Text: curr,
Icon: icon,
})
if err != nil {
log.Print(err)
}
}
}
}()
time.Sleep(3 * time.Second)
}
}