TC官方合作论坛

标题: dllcall如何使用指定路径下的dll? 前两天不是说可以吗 [打印本页]

作者: alukaduo09    时间: 2013-5-1 16:46
标题: dllcall如何使用指定路径下的dll? 前两天不是说可以吗
我刚刚封装函数的时候经过测试无法使用绝对路径,必须放在系统路径下才可以调用正确.
调用成功的代码如下   :
功能 二漠网卡码()
    如果(文件.是否存在("C:\\WINDOWS\\system32\\HWInfo.dll "))
    否则
        文件.拷贝("rc:HWInfo.dll","C:\\WINDOWS\\system32\\HWInfo.dll")
    如果结束
    返回 dllcall("HWInfo.dll","char *","getMAC","int","0")///0为第一块网卡 1为第二块
功能结束



调用失败代码如下  

功能 二漠网卡码()
    返回 dllcall("rc:HWInfo.dll","char *","getMAC","int","0")///0为第一块网卡 1为第二块
功能结束
作者: 陌上青衣。    时间: 2013-5-1 17:17
rc:是相对路径好吧,
路径=help.getrcpath("rc:")
dllcall(路径&"HWInfo.dll","char *","getMAC","int","0")
作者: alukaduo09    时间: 2013-5-1 18:27
回复 2楼陌上青衣。的帖子

谢谢了,你这个方法可以了.   麻烦帮我看看我这个代码是怎么了.   返回值怎么搞都是 null
调试2个小时了  换E语言 测试是没问题的.
模块句柄=dllcall("kernel32.dll","int","LoadLibrary","char *","user32")
    如果(模块句柄==null||模块句柄==0)
        返回 -1
    否则
        函数地址=dllcall("KERNEL32.DLL","int","GetProcAddress","int",模块句柄,"char *","MessageBoxA")
        如果(函数地址==null)
            dllcall("KERNEL32.DLL","int","FreeLibrary","int",模块句柄)
            返回 -1
        否则
            返回 函数地址
        如果结束  
    如果结束
作者: jimmykot    时间: 2013-5-1 22:26
沙发......
作者: TC兔子    时间: 2013-5-12 07:18
回复 3楼alukaduo09的帖子

不知道是不是因为结构体的事?TC好像还不支持结构体




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1