递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1935|回复: 10
打印 上一主题 下一主题

[视窗] 关于火山线程的问题

[复制链接]

7

主题

33

帖子

121

积分

注册会员

Rank: 2

积分
121
跳转到指定楼层
楼主
发表于 2024-8-20 17:14:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在火山里面的线程默认的命令 有个 线程启动  线程等待 这个应该怎么调用?

或者精益模块里面有个线程_启动  线程_等待  线程_销毁 怎么调用都出错 如图 应该如何正确调用这个命令呢?


回复

使用道具 举报

7

主题

33

帖子

121

积分

注册会员

Rank: 2

积分
121
沙发
 楼主| 发表于 2024-8-20 17:15:16 | 只看该作者
在易语言里面这样调用没有问题 ,但是在火山里面这个调用说找不到变量 火山只有方法名 但是没有子程序概念 不知道怎么调用啊
回复

使用道具 举报

26

主题

1899

帖子

6920

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6920
板凳
发表于 2024-8-20 17:31:23 | 只看该作者
精易这个线程_启动也没封装好,不能返回线程ID,但启动线程还是没问题的。
要启动的子程序用 取静态方法地址() ,线程函数应该按「启动线程」的「线程模板函数1」来定义,必须静态。
回复

使用道具 举报

7

主题

33

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
 楼主| 发表于 2024-8-20 18:09:07 | 只看该作者
Xelloss0618 发表于 2024-8-20 17:31
精易这个线程_启动也没封装好,不能返回线程ID,但启动线程还是没问题的。
要启动的子程序用 取静态方法地 ...



但是用静态无法执行线程哦 什么情况? 线程第一个信息框都无法被执行?


2.png (39.25 KB, 下载次数: 35)

2.png
回复

使用道具 举报

7

主题

33

帖子

121

积分

注册会员

Rank: 2

积分
121
5#
 楼主| 发表于 2024-8-20 18:15:18 | 只看该作者
Xelloss0618 发表于 2024-8-20 17:31
精易这个线程_启动也没封装好,不能返回线程ID,但启动线程还是没问题的。
要启动的子程序用 取静态方法地 ...



反复测试有问题,线程句柄可以返回,但是线程里面的命令根本是无法执行,所以就一直卡在等待这里了,什么情况? 我用的是DLL注入第三方EXE应该没有关系吧?



回复

使用道具 举报

22

主题

285

帖子

1997

积分

金牌会员

Rank: 6Rank: 6

积分
1997
QQ
6#
发表于 2024-8-20 19:18:51 | 只看该作者
本帖最后由 793359277 于 2024-8-20 19:20 编辑
qiken 发表于 2024-8-20 18:15
反复测试有问题,线程句柄可以返回,但是线程里面的命令根本是无法执行,所以就一直卡在等待这里了,什 ...

果然又是DLL, 不可以写在DllMain中, 很多人都像你一样, 在DllMain中写一些被禁止的操作, 然后发帖说BUG

动态链接库最佳做法 - Win32 apps | Microsoft Learn
回复

使用道具 举报

7

主题

33

帖子

121

积分

注册会员

Rank: 2

积分
121
7#
 楼主| 发表于 2024-8-20 19:35:00 | 只看该作者
793359277 发表于 2024-8-20 19:18
果然又是DLL, 不可以写在DllMain中, 很多人都像你一样, 在DllMain中写一些被禁止的操作, 然后发帖说BUG
...

n那我是DLL线程中调用的,需要用到线程等待,应该怎么写呢? 还是说在DLL里无法用线程命令?
回复

使用道具 举报

22

主题

285

帖子

1997

积分

金牌会员

Rank: 6Rank: 6

积分
1997
QQ
8#
发表于 2024-8-20 19:53:17 | 只看该作者
qiken 发表于 2024-8-20 19:35
n那我是DLL线程中调用的,需要用到线程等待,应该怎么写呢? 还是说在DLL里无法用线程命令? ...

DllMain是可以启动线程的, 但禁止等待线程. 最佳做法是写在输出函数中, 让EXE主动调用.  当然还有一些另类的方法, 我自己实践出来的,  如: HOOK某个API用作跳板间接执行, 在API被调用时执行你想要的操作.  又或是DLL动态生成一段启动线程调用DLL导出函数的汇编(你想要的操作写在导出函数里), 申请一块内存区域把汇编代码写进去, 然后启动线程去执行
回复

使用道具 举报

7

主题

33

帖子

121

积分

注册会员

Rank: 2

积分
121
9#
 楼主| 发表于 2024-8-20 20:00:44 | 只看该作者
793359277 发表于 2024-8-20 19:53
DllMain是可以启动线程的, 但禁止等待线程. 最佳做法是写在输出函数中, 让EXE主动调用.  当然还有一些另 ...

好像有点麻烦哦 对了这个DLL启动那里无法访问网络的》?用网页_访问 返回数据是空的  必须在线程里才可以 所以我这个初始化是需要访问网络的 所以只能写在线程里 但是线程又不能等待 那怎么整》  不等待无法拦截主程序EXE啊  堵塞不了
回复

使用道具 举报

7

主题

33

帖子

121

积分

注册会员

Rank: 2

积分
121
10#
 楼主| 发表于 2024-8-20 20:01:49 | 只看该作者
qiken 发表于 2024-8-20 20:00
好像有点麻烦哦 对了这个DLL启动那里无法访问网络的》?用网页_访问 返回数据是空的  必须在线程里才可以 ...

EXE是第三方别人的 我现在只能调用我的DLL 我用是永久注入的方式。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-23 05:55 , Processed in 0.095926 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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