Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将IDM(Internet下载管理器)API与Go一起使用_Go_Com_System Calls_Idm - Fatal编程技术网

将IDM(Internet下载管理器)API与Go一起使用

将IDM(Internet下载管理器)API与Go一起使用,go,com,system-calls,idm,Go,Com,System Calls,Idm,我试图通过Go调用IDMAPI。我检查了Python和C#的实现,并在Go中编写了一个演示,但它无法运行,并且显示了以下错误,那么是否有人可以告诉我原因,或者提供一个可以调用api的演示 Exception 0xc0000005 0x0 0xffffffffffffffff 0x7ff973decc86 PC=0x7ff973decc86 syscall.Syscall9(0x7ff973e61f10, 0x9, 0x1c30f1a55f8, 0x1c30f1e0fe8, 0x1c30f1cb

我试图通过Go调用IDMAPI。我检查了Python和C#的实现,并在Go中编写了一个演示,但它无法运行,并且显示了以下错误,那么是否有人可以告诉我原因,或者提供一个可以调用api的演示

Exception 0xc0000005 0x0 0xffffffffffffffff 0x7ff973decc86
PC=0x7ff973decc86

syscall.Syscall9(0x7ff973e61f10, 0x9, 0x1c30f1a55f8, 0x1c30f1e0fe8, 0x1c30f1cb478, 0x1c30f1cb4f8, 0x1c30f1cb798, 0x1c30f1cb518, 0x1c30f1cb578, 0x1c30f1cba78, ...)
        C:/Go/src/runtime/syscall_windows.go:214 +0xf2
main.(*ICIDMLinkTransmitter).SendLinkToIDM(0x1c30f1d20e8, 0x1c30f1a55f8, 0x1c30f1e0fe8, 0x1c30f1cb478, 0x1c30f1cb4f8, 0x1c30f1cb798, 0x1c30f1cb518, 0x1c30f1cb578, 0x1c30f1cba78, 0x1c300000000, ...)
        C:/D/gocode/idm/main.go:52 +0x145
main.(*IDMLinkTransmitter).SendLinkToIDM(0xc000006028, 0xfdf9aa, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        C:/D/gocode/idm/main.go:97 +0x2fc
main.main()
        C:/D/gocode/idm/main.go:130 +0x105
rax     0x70007400740068
rbx     0x1082f80
rcx     0x69d75ffc60
rdi     0x3
rsi     0x69d75ffc60
rbp     0x69d75ffc30
rsp     0x69d75ff880
r8      0x3
r9      0x1c30f1cb4f8
r10     0x1c30f1d20e8
r11     0x1c30f1cba78
r12     0x11
r13     0x10
r14     0x1c30f1a55f8
r15     0x2030000
rip     0x7ff973decc86
rflags  0x10202
cs      0x33
fs      0x53
gs      0x2b
exit status 2
这是我的密码:

以下是api手册:

以下是Python的实现:
几周后,我自己解决了这个问题。在研究c代码编写之后,我发现出现错误是因为结构本身没有在系统调用中传递。正确的代码如下所示

包idm
进口(
“系统调用”
“不安全”
“github.com/lxn/win”
)
类型ICIDMLinkTransmitter2Vtbl结构{
查询接口uintptr
AddRef uintpttr
释放uintptr
SendLinkToIDM uintptr
发送链接至DM2 uintptr
SendLinksArray uintpttr
}
类型ICIDMLinkTransmitter2结构{
vtbl*ICIDMLinkTransmitter2Vtbl
}
func(obj*ICIDMLinkTransmitter2)释放()uint32{
r1,,:=syscall.syscall(
obj.vtbl.Release,
1.
uintptr(不安全的指针(obj)),
0,
0,
)
返回uint32(r1)
}
func(obj*ICIDMLinkTransmitter2)SendLinkToIDM(url、引用、cookie、数据、用户、密码、,
localPath,localFileName*uint16,标志int32)uint32{
r1,,:=syscall.Syscall12(
obj.vtbl.SendLinkToIDM,
10,
uintptr(不安全的指针(obj)),
uintptr(不安全的.指针(url)),
uintptr(不安全的指针(引用器)),
uintptr(不安全的指针(cookies)),
uintptr(不安全的指针(数据)),
uintptr(不安全的指针(用户)),
uintptr(不安全的指针(密码)),
uintptr(不安全的.指针(本地路径)),
uintptr(不安全的.Pointer(localFileName)),
uintptr(旗帜),
0,
0,
)
返回uint32(r1)
}
func(obj*ICIDMLinkTransmitter2)SendLinkToIDM2(url、引用、cookie、数据、用户、密码、,
localPath,localFileName*uint16,标志int32,reserved1,reserved2*win.VARIANT)uint32{
r1,,:=syscall.Syscall12(
obj.vtbl.SendLinkToIDM2,
12,
uintptr(不安全的指针(obj)),
uintptr(不安全的.指针(url)),
uintptr(不安全的指针(引用器)),
uintptr(不安全的指针(cookies)),
uintptr(不安全的指针(数据)),
uintptr(不安全的指针(用户)),
uintptr(不安全的指针(密码)),
uintptr(不安全的.指针(本地路径)),
uintptr(不安全的.Pointer(localFileName)),
uintptr(旗帜),
uintptr(不安全的指针(保留1)),
uintptr(不安全的.指针(保留2)),
)
返回uint32(r1)
}
func(obj*ICIDMLinkTransmitter2)发送链接阵列(位置*uint16,pLinksArray*win.VARIANT)uint32{
r1,,:=syscall.syscall(
obj.vtbl.SendLinksArray,
3.
uintptr(不安全的指针(obj)),
uintptr(不安全的指针(位置)),
uintptr(不安全的.指针(pLinksArray)),
)
返回uint32(r1)
}
完整的代码在这里