TC官方合作论坛

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

[其他] 让TC支持<<指针操作>> . 使用TLL封装. 使TC支持更多windows32 API

  [复制链接]
跳转到指定楼层
楼主
发表于 2014-6-29 12:20:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 alukaduo09 于 2014-7-12 16:43 编辑

TLL内的关键子                    em.公用变量[]    em.取变量指针(,)  em.公用变量指针[]   与  em.数据初始化()

TLL使用4.310b 版本编译  也就是当前发表帖子时间的 TC最新版本

公用变量   与   公用变量指针  的数组大小为  500个         也就是下标 0 到 499

功能 初始化()
    线程.开启("em.数据初始化",1000)
    //看字面意思你们都懂大概在做什么了.
    //函数无返回值   参数为延迟初始化的的毫秒时间
    //初始化下面使用最后设置1-3秒的延迟
    //为什么要等待一会呢. 因为程序启动的时候有时候变量还未分配好自己应有的位置.
    //所以要等待程序完全运行成功才可以去申请自己的变量空间. 如果是程序已经启动好了的话就直接填 1毫秒就可以了.
功能结束

功能 开始_点击()

    //使用调用示例: 1
    //调用  MessageBox  因为TC的字符串存储的方式为Unicode字符串 Windows系统API关于带有字符串操作的都分为 A 与 W
    //例如说 : MessageBoxA 与  MessageBoxW     下面请看例子:
    //=============================================================================================\\
    em.公用变量[0]="TC你好"  
    em.公用变量[1]="em"   
    //定义两个字符串缓冲区 作为"MessageBox函数内的必要参数! 这个其实就是跨空间传变量
    内容指针=em.取变量指针(0)
    //然后通过我封装的函数得到刚才你定义的缓冲区的指针.        注意 ! 字符型必须使用 em.取变量指针(数组下标) 来取到指针
    标题指针=em.取变量指针(1)
    dllcall("user32.dll","int","MessageBoxW","int",0,"int",内容指针,"int",标题指针,"int",0)

    //==============================================================================================\\

    //为了使用方便我还特意使用了一个数组存放了 em.公用变量  的全部指针 ==>  em.公用变量指针
    //但是如果你定义的字符型的数据的话就不能直接使用这里面的指针. 因为字符串的长度是无法预
    //测的, 因此字符串在内存中都是以指针指向的方法来传参.如果你定义的 "不是字符型" 的数据可以这样调用 !
    //下面是使用另外一个存放指针的数组的使用方法 数组的定义为   em.公用变量指针[对应变量的下标]
功能结束

功能 退出_点击()
    ////例子 :2
    窗口句柄=窗口.自身句柄()
    //获得自己的窗口句柄给下面用
    em.公用变量[2]=null
    //先定义一个4字节的变量给下面的函数用
    线程ID=dllcall("user32.dll","int","GetWindowThreadProcessId","int",窗口句柄,"int",em.公用变量指针[2])
    //"GetWindowThreadProcessId 的参数2为一个装载进程PID的指针缓存 .这里我们用到了em.公用变量指针[2]作为缓存区

    //////--------------------------------------------------
    //////当然你可以自己申请个 例如说下面的
    //////空内存=dllcall("kernel32.dll","int","VirtualAlloc","int",0,"int",4,"int",#1000,"int",#40) //申请个可读写执行的内存
    //////线程ID=dllcall("user32.dll","int","GetWindowThreadProcessId","int",窗口句柄,"int",空内存) //将自己申请的内存存放进程PID
    //////PID=进程.读4byte(进程.获取进程句柄(窗口.得到标题(窗口.自身句柄())),空内存)  //读取申请的内存里面的数值
    //////这样看上去很麻烦,推荐使用我封装好的函数来取指针缓存的内容.
    //////----------------------------------------------------

    PID=em.取变量指针(2,1)
    //em.取变量指针有第二个参数 ,第二个参数默认为0 , 可不填写 . 如果参数2为 1 那么就是取 "使用指针作为返回内容" 的方法!
    //函数的返回值为指针内的内容   但是我要推荐使用下面的方法.
    进程PID=em.公用变量[2]
    //经过使用 em.取变量指针 之后em.公用变量[2]也就是指针缓存所指向的进程PID了 .如果之前没有经过 em.取变量指针(2,1) 这里的值为 空
    进程句柄=进程.信息(进程PID,2)
    //将PID转换成进程句柄给下面的申请内存API使用
    申请的内存地址=dllcall("kernel32.dll","int","VirtualAllocEx","int",进程句柄,"int",0,"int",4,"int",#1000,"int",#40)
    //这个API返回了申请好可读写执行的内存首址. 申请大小为4 但是这个形式的默认在内存里给你分配为#1000字节的大小也就是一个分页4096
    //申请的空内存留给下面的函数做测试
    em.公用变量[3]=123456
    //下面我们向我们申请的内存首址写入整数十进制 123456
    是否成功=dllcall("kernel32.dll","int","WriteProcessMemory","int",进程句柄,"int",申请的内存地址,"int",em.公用变量指针[3],"int",4,"int",0)
    //这里向我们的内存里面写入了数据
    调试输出(进程.读4byte(进程句柄,申请的内存地址))
    //测试一下读取我们写入的数据是否正确 .
功能结束










本帖子中包含更多资源

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

x

评分

参与人数 2威望 +20 金币 +20 收起 理由
超自然 + 10 + 10 很给力!
rainshine + 10 + 10 二漠大神~其实我也有个自己写的小小的内存.

查看全部评分

回复

使用道具 举报

23#
发表于 2014-8-26 09:03:51 | 只看该作者
我回复顶你
回复 支持 反对

使用道具 举报

22#
发表于 2014-8-19 08:34:54 | 只看该作者
,好东西,茅塞顿开。。。。
回复 支持 反对

使用道具 举报

21#
发表于 2014-8-18 03:14:10 | 只看该作者
本帖最后由 julele 于 2014-8-18 03:15 编辑

TC4.33 初始化em会出错.....
能不能把em.tll的源码给分享一下?
回复 支持 反对

使用道具 举报

20#
发表于 2014-7-3 05:56:58 | 只看该作者
悄悄~~~~~
回复

使用道具 举报

19#
发表于 2014-6-30 12:10:10 | 只看该作者
不明觉厉!
回复

使用道具 举报

18#
发表于 2014-6-29 22:23:13 | 只看该作者
我有种预感,此贴必火……
回复 支持 反对

使用道具 举报

17#
发表于 2014-6-29 22:22:30 | 只看该作者
alukaduo09 发表于 2014-6-29 19:02
嗯  , 基本用这个更方便一些 .

我实现的原理是定位自己变量的内存地址. 然后让公用变量的数组的值指向那 ...

懂得,对c指针了解的比较多,挺熟悉的。谢谢大神指点~
回复 支持 反对

使用道具 举报

16#
发表于 2014-6-29 20:30:50 来自手机 | 只看该作者
高深莫测有待研究
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2014-6-29 19:02:37 | 只看该作者
rainshine 发表于 2014-6-29 18:39
二漠大神~其实我也有个自己写的小小的内存库  也是这原理  自己申请内存空间作为指针。~~好棒~支持支持  tc ...

嗯  , 基本用这个更方便一些 .

我实现的原理是定位自己变量的内存地址. 然后让公用变量的数组的值指向那些内容地址  
这样的好处就是不会出现频繁申请内存出现不可预料的稳定性的问题.
其实你如果懂我说的意思的话你自己也可以实现相同的功能,  而且自己封装出来的东西使用更加灵活一些
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

关闭

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

GMT+8, 2026-3-11 00:30 , Processed in 0.119252 second(s), 25 queries .

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

© 2001-2013 Comsenz Inc.

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