本文整理汇总了Golang中github.com/mattn/go-ole/oleutil.CallMethod函数的典型用法代码示例。如果您正苦于以下问题:Golang CallMethod函数的具体用法?Golang CallMethod怎么用?Golang CallMethod使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CallMethod函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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)
array := (*ole.SAFEARRAY)(unsafe.Pointer(uintptr(data.Val)))
s := ole.BytePtrToString((*byte)(unsafe.Pointer(uintptr(array.PvData))))
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
}
开发者ID:piaobocpp,项目名称:doc2pdf-go,代码行数:31,代码来源:winsock.go
示例2: main
func main() {
ole.CoInitialize(0)
unknown, _ := oleutil.CreateObject("Microsoft.XMLHTTP")
xmlhttp, _ := unknown.QueryInterface(ole.IID_IDispatch)
oleutil.CallMethod(xmlhttp, "open", "GET", "http://rss.slashdot.org/Slashdot/slashdot", false)
oleutil.CallMethod(xmlhttp, "send", nil)
state := -1
for state != 4 {
state = int(oleutil.MustGetProperty(xmlhttp, "readyState").Val)
time.Sleep(10000000)
}
responseXml := oleutil.MustGetProperty(xmlhttp, "responseXml").ToIDispatch()
items := oleutil.MustCallMethod(responseXml, "selectNodes", "rdf:RDF/item").ToIDispatch()
length := int(oleutil.MustGetProperty(items, "length").Val)
for n := 0; n < length; n++ {
item := oleutil.MustGetProperty(items, "item", n).ToIDispatch()
title := oleutil.MustCallMethod(item, "selectSingleNode", "title").ToIDispatch()
println(oleutil.MustGetProperty(title, "text").ToString())
link := oleutil.MustCallMethod(item, "selectSingleNode", "link").ToIDispatch()
println(" " + oleutil.MustGetProperty(link, "text").ToString())
title.Release()
link.Release()
item.Release()
}
items.Release()
xmlhttp.Release()
}
开发者ID:xushiwei,项目名称:go-ole,代码行数:31,代码来源:rssreader.go
示例3: 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
}
开发者ID:BOHICAMAN,项目名称:serial-port-json-server,代码行数:52,代码来源:seriallist_windows.go
示例4: 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)
}
开发者ID:xushiwei,项目名称:go-ole,代码行数:13,代码来源:msagent.go
示例5: QueryWmiFields
func QueryWmiFields(query string, fields []string) ([]map[string]string, error) {
if len(fields) == 1 && fields[0] == "*" {
logging.Errorf("`select * ` not supported, need to address fields explicitly.")
return nil, fmt.Errorf("`select * ` not supported, need to address fields explicitly.")
}
resultRaw, err := oleutil.CallMethod(wmi_service, "ExecQuery", query)
if err != nil {
logging.Error("ExecQuery Failed: ", err)
return nil, fmt.Errorf("ExecQuery Failed: %v", err)
}
result := resultRaw.ToIDispatch()
defer result.Release()
countVar, err := oleutil.GetProperty(result, "Count")
if err != nil {
logging.Errorf("Get result count Failed: %v", err)
return nil, fmt.Errorf("Get result count Failed: %v", err)
}
count := int(countVar.Val)
resultMap := []map[string]string{}
for i := 0; i < count; i++ {
itemMap := make(map[string]string)
itemRaw, err := oleutil.CallMethod(result, "ItemIndex", i)
if err != nil {
return nil, fmt.Errorf("ItemIndex Failed: %v", err)
}
item := itemRaw.ToIDispatch()
defer item.Release()
for _, field := range fields {
asString, err := oleutil.GetProperty(item, field)
if err == nil {
itemMap[field] = fmt.Sprintf("%v", asString.Value())
} else {
fmt.Println(err)
}
}
resultMap = append(resultMap, itemMap)
logging.Tracef("wmi query result: %+v", itemMap)
}
logging.Tracef("wmi query result count: %d", len(resultMap))
return resultMap, nil
}
开发者ID:homingway,项目名称:hickwall,代码行数:51,代码来源:wmi.go
示例6: query
func (c *win_wmi_collector) query(query string, fields []string) ([]map[string]string, error) {
if c.service != nil {
resultRaw, err := oleutil.CallMethod(c.service, "ExecQuery", query)
if err != nil {
logging.Error("ExecQuery Failed: ", err)
return nil, fmt.Errorf("ExecQuery Failed: %v", err)
}
result := resultRaw.ToIDispatch()
defer result.Release()
countVar, err := oleutil.GetProperty(result, "Count")
if err != nil {
logging.Error("Get result count Failed: ", err)
return nil, fmt.Errorf("Get result count Failed: %v", err)
}
count := int(countVar.Val)
resultMap := []map[string]string{}
for i := 0; i < count; i++ {
itemMap := make(map[string]string)
itemRaw, err := oleutil.CallMethod(result, "ItemIndex", i)
if err != nil {
return nil, fmt.Errorf("ItemIndex Failed: %v", err)
}
item := itemRaw.ToIDispatch()
defer item.Release()
for _, field := range fields {
asString, err := oleutil.GetProperty(item, field)
if err == nil {
itemMap[field] = fmt.Sprintf("%v", asString.Value())
} else {
logging.Errorf("cannot find field in SWbemObject: %v", err)
}
}
resultMap = append(resultMap, itemMap)
logging.Tracef("wmi query result: %+v", itemMap)
}
logging.Tracef("wmi query result count: %d", len(resultMap))
return resultMap, nil
} else {
logging.Error("win_wmi_collector c.service is nil")
return nil, fmt.Errorf("win_wmi_collector c.service is nil")
}
}
开发者ID:homingway,项目名称:hickwall,代码行数:50,代码来源:wmi_windows.go
示例7: open
func (pt *PowerPoint) open(inFile string) (err error) {
ole.CoInitialize(0)
var unknown *ole.IUnknown
unknown, err = oleutil.CreateObject("PowerPoint.Application")
if err != nil {
return
}
pt.app, err = unknown.QueryInterface(ole.IID_IDispatch)
if err != nil {
return
}
_, err = oleutil.PutProperty(pt.app, "DisplayAlerts", 1)
if err != nil {
return
}
pt.presentations, err = oleutil.GetProperty(pt.app, "Presentations")
if err != nil {
return
}
pt.ppt, err = oleutil.CallMethod(pt.presentations.ToIDispatch(), "Open", inFile, -1, 0, 0)
if err != nil {
return
}
return
}
开发者ID:nzheyuti,项目名称:doc2pdf-nodejs,代码行数:33,代码来源:powerpoint_windows.go
示例8: main
func main() {
ole.CoInitialize(0)
unknown, _ := oleutil.CreateObject("{248DD896-BB45-11CF-9ABC-0080C7E7B78D}")
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)
}
}
开发者ID:piaobocpp,项目名称:doc2pdf-go,代码行数:30,代码来源:winsock.go
示例9: Close
func (rc *AdodbRows) Close() error {
_, err := oleutil.CallMethod(rc.rc, "Close")
if err != nil {
return err
}
return nil
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:7,代码来源:adodb.go
示例10: Commit
func (tx *AdodbTx) Commit() error {
_, err := oleutil.CallMethod(tx.c.db, "CommitTrans")
if err != nil {
return err
}
return nil
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:7,代码来源:adodb.go
示例11: Rollback
func (tx *AdodbTx) Rollback() error {
_, err := oleutil.CallMethod(tx.c.db, "Rollback")
if err != nil {
return err
}
return nil
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:7,代码来源:adodb.go
示例12: Begin
func (c *AdodbConn) Begin() (driver.Tx, error) {
_, err := oleutil.CallMethod(c.db, "BeginTrans")
if err != nil {
return nil, err
}
return &AdodbTx{c}, nil
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:7,代码来源:adodb.go
示例13: connect
func (c *win_wmi_collector) connect() (err error) {
// use COINIT_MULTITHREADED model
ole.CoInitializeEx(0, ole.COINIT_MULTITHREADED)
unknown, err := oleutil.CreateObject("WbemScripting.SWbemLocator")
if err != nil {
logging.Critical("oleutil.CreateObject Failed: ", err)
return err
}
defer unknown.Release()
wmi, err := unknown.QueryInterface(ole.IID_IDispatch)
if err != nil {
logging.Critical("QueryInterface Failed: ", err)
return err
}
defer wmi.Release()
serviceRaw, err := oleutil.CallMethod(wmi, "ConnectServer")
if err != nil {
logging.Critical("Connect to Server Failed", err)
return err
}
c.service = serviceRaw.ToIDispatch()
return nil
}
开发者ID:homingway,项目名称:hickwall,代码行数:27,代码来源:wmi_windows.go
示例14: Query
func (s *AdodbStmt) Query(args []driver.Value) (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
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:10,代码来源:adodb.go
示例15: Exec
func (s *AdodbStmt) Exec(args []driver.Value) (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
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:10,代码来源:adodb.go
示例16: 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()
}
开发者ID:jeffycf,项目名称:go-ole,代码行数:20,代码来源:excel.go
示例17: bind
func (s *AdodbStmt) bind(args []driver.Value) 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)
if err != nil {
return err
}
_, err = oleutil.CallMethod(s.ps, "Append", param)
if err != nil {
return err
}
}
} else {
for i, v := range args {
var varval ole.VARIANT
varval.VT = ole.VT_I4
varval.Val = int64(i)
val, err := oleutil.CallMethod(s.ps, "Item", &varval)
if err != nil {
return err
}
item := val.ToIDispatch()
defer item.Release()
_, err = oleutil.PutProperty(item, "Value", v)
if err != nil {
return err
}
}
}
return nil
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:41,代码来源:adodb.go
示例18: createMdb
func createMdb(f string) error {
unk, err := oleutil.CreateObject("ADOX.Catalog")
if err != nil {
return err
}
cat, err := unk.QueryInterface(ole.IID_IDispatch)
if err != nil {
return err
}
_, err = oleutil.CallMethod(cat, "Create", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+f+";")
if err != nil {
return err
}
return nil
}
开发者ID:hinike,项目名称:go-adodb,代码行数:15,代码来源:mdb.go
示例19: NumInput
func (s *AdodbStmt) NumInput() int {
if s.b != nil {
return len(s.b)
}
_, err := oleutil.CallMethod(s.ps, "Refresh")
if err != nil {
return -1
}
val, err := oleutil.GetProperty(s.ps, "Count")
if err != nil {
return -1
}
c := int(val.Val)
return c
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:15,代码来源:adodb.go
示例20: Open
func (d *AdodbDriver) Open(dsn string) (driver.Conn, error) {
ole.CoInitialize(0)
unknown, err := oleutil.CreateObject("ADODB.Connection")
if err != nil {
return nil, err
}
db, err := unknown.QueryInterface(ole.IID_IDispatch)
if err != nil {
return nil, err
}
_, err = oleutil.CallMethod(db, "Open", dsn)
if err != nil {
return nil, err
}
return &AdodbConn{db}, nil
}
开发者ID:kleopatra999,项目名称:go-adodb,代码行数:16,代码来源:adodb.go
注:本文中的github.com/mattn/go-ole/oleutil.CallMethod函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论