易语言api CreateThread启动线程传递多个类型参数

易语言自动启动线程命令(),其实就是对API CreateThread的封装,我们如何启动线程的时候让它传递多个参数,并且类型可以是整数,是文本,在前面几个文章里,讲解了启动线程传参文本型,多个参数等等,今天我们用自定义数据结构类型的方式来实现,使用lstrcat该函数将字符串lpString2附加在另一个字符串lpString1后面从而实现多参数的传递。可以先参考以下两篇文章了解多线程的传参。

易语言启动线程传递文本参数
易语言启动线程传递多个类型变量

自定义传递的参数结构

这里我们只定义了文本和整数,你要传递其他的,可以再定义几个,或者多个。

511遇见(www.511yj.com) 

.版本 2
 
.数据类型 参数结构
    .成员 整数, 整数型
    .成员 文本, 文本型

封装 API_启动线程

第二参数是我们传递的参数,这里先定义成整数

511遇见(www.511yj.com) 

.版本 2
.子程序 API_启动线程, 整数型
.参数 子程序指针, 子程序指针
.参数 整数参数, 整数型, 可空
.局部变量 hThread, 整数型

hThread = CreateThread (0, 0, 子程序指针, 整数参数, 0, 0)  ' 返回线程句柄
CloseHandle (hThread)  ' 关闭线程句柄
返回 (hThread)

多参传递调用示范

先定义一个变量:参数结构,它的类型就是我们自定义的数据结构类型,
通过lstrcatA (参数结构, 0)进行参数传递。

511遇见(www.511yj.com) 

.版本 2
 
.局部变量 参数结构, 参数结构, 静态
 
参数结构.整数 = 20200606
参数结构.文本 = “文本型内容”
API_启动线程 (&线程主线程, lstrcatA (参数结构, 0))

线程主线程

在启动的线程主线程里,我们采用了RtlMoveMemory (参数结构, 参数, 4 × 2) ' 复制内存 结构数据,把传递进来的参数给接受过来。

511遇见(www.511yj.com) 

.版本 2

.子程序 线程主线程
.参数 参数, 整数型
.局部变量 参数结构, 参数结构

RtlMoveMemory (参数结构, 参数, 4 × 2)  ' 复制内存 结构数据
输出调试文本 (参数结构.文本, 参数结构.整数)

用到的API

511遇见(www.511yj.com) 

.版本 2
 
.DLL命令 RtlMoveMemory
    .参数 Destination, 参数结构, 传址
    .参数 Source, 整数型
    .参数 Length, 整数型
 
.DLL命令 lstrcatA, 整数型, , "lstrcatA"
    .参数 lpString1, 参数结构, 传址, 此参数结构可以自定义
    .参数 lpString2, 整数型, 传址
 
.DLL命令 CreateThread, 整数型
    .参数 lpThreadAttributes, 整数型
    .参数 dwStackSize, 整数型
    .参数 lpStartAddress, 子程序指针
    .参数 lpParameter, 整数型
    .参数 dwCreationFlags, 整数型
    .参数 LpthreadId, 整数型, 传址
 
.DLL命令 CloseHandle, 逻辑型
    .参数 hObject, 整数型

源码:易语言CreateThread启动线程传递多个类型参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

511遇见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值