TC官方合作论坛

 找回密码
 立即注册
查看: 5140|回复: 73
打印 上一主题 下一主题

[讨论] dllcall 调用powerbasic写的dll例子

  [复制链接]
跳转到指定楼层
楼主
发表于 2013-7-15 17:53:08 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上加入TC

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

x
本帖最后由 venski 于 2015-5-19 00:02 编辑

通过powerbasic写自己要用的功能.

#COMPILE DLL "tcdll.dll" '表示编译成DLL文件,后面的DLL名称自己定义.
#DIM ALL '声明所有
%USEMACROS = 1
#INCLUDE "Win32API.inc"      'Win32API函数库,只要这样用了大部分的API都可以直接用
GLOBAL ghInstance AS DWORD '这句测试这里可以注释掉
'声明函数时,用ALIAS别名和EXPORT导出关键字,字符串由于TC传的是指针,所以,你应该用Copymemory,具体介绍,请百度
FUNCTION testfun ALIAS "testfun" (BYREF ReceiveStr AS string)EXPORT AS STRING
    '内部字符串,也是计算后的返回结果
    DIM PrivateStr AS STRING
    '(接受)传入字符串的指针变量
    DIM ReceiveStrPtr AS LONG
    ReceiveStrPtr=VARPTR(ReceiveStr)
    '使用CopyMemory Api 将传入字符串按指针复制一份
    DIM CopyReceive AS STRING
    CopyReceive$ = SPACE$(512)  '大小随你自己意愿修改吧
    CopyMemory(BYVAL STRPTR(CopyReceive),BYVAL ReceiveStrPtr,512)
    'strReceive = str$(strReceive)
    '这儿测试:内部字符串与得到的字符串相加结果是否正常.后期字符串长度截取,自己处理吧,查找$NUL截止即可
    MSGBOX CopyReceive
    PrivateStr="内部字符串测试---" & CopyReceive
    '函数输出
    testfun=PrivateStr
END FUNCTION
'我这里测试,就不理会libmain和dllmain,因为我用不到,这只是测试
'你在TC调用方法如下

我的结果=dllcall("tcdll.dll","char *","testfun","char *","外部传入字符串计算测试!")
//你会看到结果应该是: 内部字符串测试---外部传入字符串计算测试!

这是一个例子而已,具体要实现什么,自己动手,丰衣足食!
回复

使用道具 举报

74#
发表于 2015-4-30 19:59:04 | 只看该作者
dddddd
回复

使用道具 举报

73#
发表于 2015-4-28 22:42:19 | 只看该作者
杀毒犯傻飞
回复 支持 反对

使用道具 举报

72#
发表于 2015-2-27 20:31:50 | 只看该作者
学习学习
回复

使用道具 举报

71#
发表于 2015-2-27 12:04:08 | 只看该作者
看看
回复

使用道具 举报

70#
发表于 2015-2-21 03:04:23 | 只看该作者
相关的观点
回复 支持 反对

使用道具 举报

69#
发表于 2015-1-5 20:32:53 | 只看该作者
吊袜带维D地区的全球
回复 支持 反对

使用道具 举报

68#
发表于 2014-12-28 18:19:30 | 只看该作者
感谢楼主分享
回复 支持 反对

使用道具 举报

67#
发表于 2014-12-27 00:50:42 | 只看该作者
`````````````````1111111111111111
回复 支持 反对

使用道具 举报

66#
发表于 2014-12-22 22:50:48 | 只看该作者
咚咚咚咚咚咚咚咚咚咚咚咚
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

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

GMT+8, 2025-12-28 15:15 , Processed in 0.097601 second(s), 23 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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