一段热键小教程

社区服务
高级搜索
猴岛论坛DNF地下城与勇士DNF模型修改一段热键小教程
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
1个回复

[模型教程]一段热键小教程

楼层直达
iasfi

ZxID:9403994

等级: 新兵
举报 只看楼主 使用道具 楼主   发表于: 2009-10-31 0
      热键与窗体控件的句柄,标题,类名



先来讲解热键,细心的用户在使用QQ时,当开了两个QQ,第二个在热键时会出现一个提示框,说是热键注册失败,原因是热键冲突

热键是什么呢?比如QQ上收到了有信息时,按下 Ctrl + Alt + Z 时会弹出新的聊天对话框。这里的 Ctrl + Alt + Z 一按,不管你当时是在做什么,都会弹出那个QQ聊天框的组合按键,就叫做热键

由此可见,热键就是属于那种,不管你在任何的软件上做什么事务,只要一按下曾经注册过的那组按键,系统就会去调用被注册热键时指定的子程序代码来执行.

下面我们来设计一个简单的热键程序,源代码见本节第一例

窗口布局如下



然后编写代码如下



热键的编写如上面的代码,然后可以调试或编译成EXE文运行,试试按下 Ctrl + Alt + Q 会有什么反应,还有按 home 这个键又有什么反应,如果什么反应都没有话,看看代码上有没有错误,



上面的代码对于热键进行了初步的讲解,不是很明白的话不要紧,用多了后自然会明白的



再来讲解窗口句柄

在上面的热键里,我们用到了一个 _启动窗口.取窗口句柄(),,,后面的,窗口句柄是什么是很重要的,在外挂的编程生涯中,离不开这个窗口句柄,事实上,除了这个窗口句柄外,还有一大堆的各种各样的句柄。

窗口句柄是一个数值型数据,这个数值占用4字节内存,等于一个整数型的变量所用的内存4字节长度,所以可以用整数型变量来存放 窗口句柄,

窗口句柄的作用是用来标识某个窗口窗体或控件用的,可以通过这个句柄对那个窗口进行各种的操作与调整。外挂就是要用来控置与操作游戏,所以离不开这个窗口句柄

窗口句柄在有效时间是在某个窗口或控件初始创建时被系统分配的,直到这个控件或窗口被销毁后,窗口句柄才会失效

每个控件在创建时被分配的窗口句柄都是随机的,也就是说,一个软件,这次运行时他的主窗口句配,与下次运行时的是不同的。

一个窗口句柄只能标识一个控件,不会出现两个相同的句柄来标识两个不同的控件



上面对于窗口句柄这个概念进行了初步的讲解,可能有些模糊,下面我们就来实际应用一下,实践才是真理

再来设计一个程序,界面如下,源代码见本节第二例



在窗口布局上,放上一些常用的控件



从上例我们了解到,窗口句柄是随机的,每次都会分配得不同,同时,不管是窗口本身还是窗口上的控件,都有他们的句柄





上例所显示出的句柄,是用易语言里的 取窗口句柄() 得到的,这回我们再去试试,从别的软件上得到它的窗口句柄.

上面有提到,可以通过窗口句柄,控制和操作游戏软件或其它别人的软件,前提还是先取到那个软件的窗口或控件现在句柄。有了正确的句柄,才能进行操作。

其实,一个窗口或控件,它除了有句柄外,还有其它的一些属性,如,窗口的标题,类名,内容,位置与大小等等信息

windows操作系统虽然可以同时运行很多个软件,但是,每次只能有一个软件来接受用户的输入,也就是指,只能有一个软件处于可接受用户操作的激活状态。

下面,我们来设计第三个例子,获取当前正处于激活状态的窗口的窗口句柄,并且,得到这个窗口的标题与类名信息



第三例界面如下,源代码见本节第三例





从第三例中,我们明白了,一个窗口或者控件,他们的类名是基本不变的,即使重启这个软件也不会变,但对于标题,很多的软件是可以在运行阶段中使用代码去改变的或被其它的软件修改掉的,而窗口句柄,是每次在被创建时由系统分配的,无法改变,只有重启软件才会变。



其实呢,通过用句柄可以得到该窗口或控件的标题,类名或内容,同时的,也可以根据一个窗口的标题,类名或内容找出这个窗口控件的句柄。但有一点需要清楚的是,如果有两个窗口,他们的标题类名相同的话,那你,一次只能获取一个窗口的句柄,下次才能再获取到另一个窗口的句柄,需要另外加以分析,判断出哪个句柄是哪个窗口的才行



第四例界面如下,源代码见本节第四例









对于单开的游戏,可以使用 取窗体句柄(类名,标题) 来获取其窗口的句柄,对于多开的窗口如还要获取其窗口内部的控件句柄,则必需得借助 查找窗口(父句柄,起始句柄,类名,标题) 这个功能了,使用查找窗口这个功能时,需要注意其第二个参数起始句柄的值。

另外,从上面的例子,还了解到了,原来在使用函数时,函数中的有些参数被 [] 括号括起来的被称为可空参数,可空参数也就是可以省略的参数。

如 取窗体句柄([类名],[标题]) 该函数共有两个参数,同时两个参数都是可空可省略的



例.想要两个参数都省略可以编写如下代码

取窗体句柄()  或  取窗体句柄( , )



例.想要省略第二参数,提供第一参数时

取窗体句柄(窗口类名) 或 取窗体句柄(窗口类名, )



例.想要省略第一个参数只使用第二参数时,注意这里使用了 , 号把第一参数与第二参数进行分隔

取窗体句柄( , 窗口的标题)



例.两个参数都使用时,与平时的其它函数用法一致

取窗体句柄(窗口类名,窗口标题)





这是外挂作坊第三章里的第一节教材,共分为四例,分别讲解了热键的用法与以窗口标题类名获取批配的窗口的窗口句柄,或用,某个窗口句柄来获取该窗口的标题与类名。

本节的内容是比较基础级的,却又必需得掌握,因为外挂方面的技术时时刻刻的与句柄打交道.

第三章为动作式外挂设计,学会后,就能设计出按键精灵,脚本大师这类的动作模拟外挂功能

有兴趣的朋友 可以 加我QQ:1006283242
iasfi

ZxID:9403994

等级: 新兵
举报 只看该作者 沙发   发表于: 2009-10-31 0
不知道 什么 原因 图片 发不上去
« 返回列表
发帖 回复