本文整理匯總了Golang中github.com/go-ole/go-ole/oleutil.CallMethod函數的典型用法代碼示例。如果您正苦於以下問題:Golang CallMethod函數的具體用法?Golang CallMethod怎麽用?Golang CallMethod使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了CallMethod函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Invoke
func Invoke(this *ole.IDispatch, dispid int, riid *ole.GUID, lcid int, flags int16, dispparams *ole.DISPPARAMS, result *ole.VARIANT, pexcepinfo *ole.EXCEPINFO, nerr *uint) uintptr {
switch dispid {
case 0:
log.Println("DataArrival")
winsock := (*EventReceiver)(unsafe.Pointer(this)).host
var data ole.VARIANT
ole.VariantInit(&data)
oleutil.CallMethod(winsock, "GetData", &data)
s := string(data.ToArray().ToByteArray())
println()
println(s)
println()
case 1:
log.Println("Connected")
winsock := (*EventReceiver)(unsafe.Pointer(this)).host
oleutil.CallMethod(winsock, "SendData", "GET / HTTP/1.0\r\n\r\n")
case 3:
log.Println("SendProgress")
case 4:
log.Println("SendComplete")
case 5:
log.Println("Close")
this.Release()
case 6:
log.Fatal("Error")
default:
log.Println(dispid)
}
return ole.E_NOTIMPL
}
示例2: getFriendlyName
func getFriendlyName(portname string) string {
// this method panics a lot and i'm not sure why, just catch
// the panic and return empty list
defer func() {
if e := recover(); e != nil {
// e is the interface{} typed-value we passed to panic()
log.Println("Got panic: ", e) // Prints "Whoops: boom!"
}
}()
var friendlyName string
// init COM, oh yeah
ole.CoInitialize(0)
defer ole.CoUninitialize()
unknown, _ := oleutil.CreateObject("WbemScripting.SWbemLocator")
defer unknown.Release()
wmi, _ := unknown.QueryInterface(ole.IID_IDispatch)
defer wmi.Release()
// service is a SWbemServices
serviceRaw, _ := oleutil.CallMethod(wmi, "ConnectServer")
service := serviceRaw.ToIDispatch()
defer service.Release()
// result is a SWBemObjectSet
//pname := syscall.StringToUTF16("SELECT * FROM Win32_PnPEntity where Name like '%" + "COM35" + "%'")
pname := "SELECT * FROM Win32_PnPEntity where Name like '%" + portname + "%'"
resultRaw, _ := oleutil.CallMethod(service, "ExecQuery", pname)
result := resultRaw.ToIDispatch()
defer result.Release()
countVar, _ := oleutil.GetProperty(result, "Count")
count := int(countVar.Val)
for i := 0; i < count; i++ {
// item is a SWbemObject, but really a Win32_Process
itemRaw, _ := oleutil.CallMethod(result, "ItemIndex", i)
item := itemRaw.ToIDispatch()
defer item.Release()
asString, _ := oleutil.GetProperty(item, "Name")
println(asString.ToString())
friendlyName = asString.ToString()
}
return friendlyName
}
示例3: 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)
}
示例4: Commit
func (tx *AdodbTx) Commit() error {
_, err := oleutil.CallMethod(tx.c.db, "CommitTrans")
if err != nil {
return err
}
return nil
}
示例5: Close
func (rc *AdodbRows) Close() error {
_, err := oleutil.CallMethod(rc.rc, "Close")
if err != nil {
return err
}
return nil
}
示例6: main
func main() {
ole.CoInitialize(0)
unknown, err := oleutil.CreateObject("{248DD896-BB45-11CF-9ABC-0080C7E7B78D}")
if err != nil {
panic(err.Error())
}
winsock, _ := unknown.QueryInterface(ole.IID_IDispatch)
iid, _ := ole.CLSIDFromString("{248DD893-BB45-11CF-9ABC-0080C7E7B78D}")
dest := &EventReceiver{}
dest.lpVtbl = &EventReceiverVtbl{}
dest.lpVtbl.pQueryInterface = syscall.NewCallback(QueryInterface)
dest.lpVtbl.pAddRef = syscall.NewCallback(AddRef)
dest.lpVtbl.pRelease = syscall.NewCallback(Release)
dest.lpVtbl.pGetTypeInfoCount = syscall.NewCallback(GetTypeInfoCount)
dest.lpVtbl.pGetTypeInfo = syscall.NewCallback(GetTypeInfo)
dest.lpVtbl.pGetIDsOfNames = syscall.NewCallback(GetIDsOfNames)
dest.lpVtbl.pInvoke = syscall.NewCallback(Invoke)
dest.host = winsock
oleutil.ConnectObject(winsock, iid, (*ole.IUnknown)(unsafe.Pointer(dest)))
_, err = oleutil.CallMethod(winsock, "Connect", "127.0.0.1", 80)
if err != nil {
log.Fatal(err)
}
var m ole.Msg
for dest.ref != 0 {
ole.GetMessage(&m, 0, 0, 0)
ole.DispatchMessage(&m)
}
}
示例7: begin
func (c *AdodbConn) begin(ctx context.Context) (driver.Tx, error) {
_, err := oleutil.CallMethod(c.db, "BeginTrans")
if err != nil {
return nil, err
}
return &AdodbTx{c}, nil
}
示例8: 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()
}
}
}
示例9: Rollback
func (tx *AdodbTx) Rollback() error {
_, err := oleutil.CallMethod(tx.c.db, "Rollback")
if err != nil {
return err
}
return nil
}
示例10: 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)
}
}
示例11: bind
func (s *AdodbStmt) bind(args []namedValue) error {
if s.b != nil {
for i, v := range args {
var b string = "?"
if len(s.b) < i {
b = s.b[i]
}
unknown, err := oleutil.CallMethod(s.s, "CreateParameter", b, 12, 1)
if err != nil {
return err
}
param := unknown.ToIDispatch()
defer param.Release()
_, err = oleutil.PutProperty(param, "Value", v.Value)
if err != nil {
return err
}
_, err = oleutil.CallMethod(s.ps, "Append", param)
if err != nil {
return err
}
}
} else {
for i, v := range args {
var err error
var val *ole.VARIANT
if v.Name != "" {
val, err = oleutil.CallMethod(s.ps, "Item", v.Name)
} else {
val, err = oleutil.CallMethod(s.ps, "Item", int32(i))
}
if err != nil {
return err
}
item := val.ToIDispatch()
defer item.Release()
_, err = oleutil.PutProperty(item, "Value", v.Value)
if err != nil {
return err
}
}
}
return nil
}
示例12: query
func (s *AdodbStmt) query(ctx context.Context, args []namedValue) (driver.Rows, error) {
if err := s.bind(args); err != nil {
return nil, err
}
rc, err := oleutil.CallMethod(s.s, "Execute")
if err != nil {
return nil, err
}
return &AdodbRows{s, rc.ToIDispatch(), -1, nil}, nil
}
示例13: exec
func (s *AdodbStmt) exec(ctx context.Context, args []namedValue) (driver.Result, error) {
if err := s.bind(args); err != nil {
return nil, err
}
_, err := oleutil.CallMethod(s.s, "Execute")
if err != nil {
return nil, err
}
return driver.ResultNoRows, nil
}
示例14: 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()
}
示例15: 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
}