TC官方合作论坛

 找回密码
 立即注册
查看: 1904|回复: 4

dllcall如何使用指定路径下的dll? 前两天不是说可以吗

[复制链接]
发表于 2013-5-1 16:46:14 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我刚刚封装函数的时候经过测试无法使用绝对路径,必须放在系统路径下才可以调用正确.
调用成功的代码如下   :
功能 二漠网卡码()
    如果(文件.是否存在("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:22 | 显示全部楼层
rc:是相对路径好吧,
路径=help.getrcpath("rc:")
dllcall(路径&"HWInfo.dll","char *","getMAC","int","0")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-1 18:27:36 | 显示全部楼层
回复 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
        否则
            返回 函数地址
        如果结束  
    如果结束
回复 支持 反对

使用道具 举报

发表于 2013-5-1 22:26:58 | 显示全部楼层
沙发......
回复 支持 反对

使用道具 举报

发表于 2013-5-12 07:18:05 | 显示全部楼层
回复 3楼alukaduo09的帖子

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-29 05:53 , Processed in 0.053603 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表