找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
楼主: 三叶草

[VB]调用vc Dll出错

[复制链接]

4

主题

31

回帖

155

积分

用户组: 小·技术宅

UID
7284
精华
0
威望
1 点
宅币
118 个
贡献
0 次
宅之契约
0 份
在线时间
10 小时
注册时间
2021-7-13
 楼主| 发表于 2021-7-19 21:16:55 | 显示全部楼层
然而还是木有用[捂脸]
360截图20210719211618065.jpg
回复 赞! 靠!

使用道具 举报

4

主题

31

回帖

155

积分

用户组: 小·技术宅

UID
7284
精华
0
威望
1 点
宅币
118 个
贡献
0 次
宅之契约
0 份
在线时间
10 小时
注册时间
2021-7-13
 楼主| 发表于 2021-7-19 21:19:46 | 显示全部楼层
0xAA55 发表于 2021-7-19 17:20
VC部分竟然写了个类。定睛一看,class CHookApiApp : public CWinApp。为了搞个Hook你这竟然用MFC,这是 ...

我的字典里没有"线程不安全"这几个字
回复 赞! 靠!

使用道具 举报

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24217 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2021-7-21 23:35:55 | 显示全部楼层
三叶草 发表于 2021-7-19 21:19
我的字典里没有"线程不安全"这几个字

你的字典里不一定有多线程(
回复 赞! 靠!

使用道具 举报

4

主题

31

回帖

155

积分

用户组: 小·技术宅

UID
7284
精华
0
威望
1 点
宅币
118 个
贡献
0 次
宅之契约
0 份
在线时间
10 小时
注册时间
2021-7-13
 楼主| 发表于 2021-7-24 12:27:00 | 显示全部楼层
0xAA55 发表于 2021-7-21 23:35
你的字典里不一定有多线程(

那确实
回复 赞! 靠!

使用道具 举报

55

主题

275

回帖

9352

积分

用户组: 管理员

UID
77
精华
16
威望
237 点
宅币
8217 个
贡献
251 次
宅之契约
0 份
在线时间
254 小时
注册时间
2014-2-22
发表于 2021-7-25 01:51:27 | 显示全部楼层
三叶草 发表于 2021-7-19 16:16
Hook Api,把线程注入到所有进程中,修改该进程Api的头部,使其跳转到我自己编写的函数中,拦截函数执行 ...

我的建议:

用VC写DLL,处理API HOOK相关事宜(HOOK相关的代码不要弄到VB里)。

VB6使用WMI监视进程创建,一旦发现新进程被创建,就把DLL注入到新进程里。
回复 赞! 靠!

使用道具 举报

1

主题

42

回帖

971

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
594 个
贡献
110 次
宅之契约
0 份
在线时间
129 小时
注册时间
2021-9-11
发表于 2022-6-10 22:12:36 | 显示全部楼层
我的理解VB6里 API声明内参数写 as string  那么VB就是把1个临时转换的A字符串地址放进去
回复 赞! 靠!

使用道具 举报

1

主题

42

回帖

971

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
594 个
贡献
110 次
宅之契约
0 份
在线时间
129 小时
注册时间
2021-9-11
发表于 2022-6-10 22:13:49 | 显示全部楼层
要用W字符串 就得声明为 as long   然后传入 strptr(xxx)
回复 赞! 靠!

使用道具 举报

1

主题

42

回帖

971

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
594 个
贡献
110 次
宅之契约
0 份
在线时间
129 小时
注册时间
2021-9-11
发表于 2022-6-10 22:14:59 | 显示全部楼层
这个问题其实很简单 但是C语言的高手们 太喜欢用类型了 搞的无比混乱
回复 赞! 靠!

使用道具 举报

1

主题

42

回帖

971

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
594 个
贡献
110 次
宅之契约
0 份
在线时间
129 小时
注册时间
2021-9-11
发表于 2022-6-10 22:26:48 | 显示全部楼层
我的建议是: 参数遇到要用字符串的地方都用 as long  API声明部分明确的指明用A版本还是B版本

Declare Function xxxxxxW Lib "yyyyyyyy.dll" (ByVal hWnd As Long, ByVal ccccccc As Long) As Boolean     ''声明W版本  调用时候就传入 strptr(s)

或者

Declare Function xxxxxxA Lib "yyyyyyyy.dll" (ByVal hWnd As Long, ByVal ccccccc As Long) As Boolean     ''声明A版本  调用时候就传入 strptr(strconv(s,vbformxxxx))

当然前面也说了 如果清楚这个区别 那么根据实际情况 可以灵活机动的使用 as string  毕竟这样声明用起来舒服

点评

不如使用tlb来声明  发表于 2022-6-13 18:56
回复 赞! 靠!

使用道具 举报

4

主题

31

回帖

155

积分

用户组: 小·技术宅

UID
7284
精华
0
威望
1 点
宅币
118 个
贡献
0 次
宅之契约
0 份
在线时间
10 小时
注册时间
2021-7-13
 楼主| 发表于 2022-8-16 11:23:36 | 显示全部楼层
谢谢啦
回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-16 15:08 , Processed in 0.031674 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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