插件编写傻瓜教程>>VC6.0

社区服务
高级搜索
猴岛论坛辅助工具插件编写傻瓜教程>>VC6.0
发帖 回复
正序阅读 最近浏览的帖子最近浏览的版块
0个回复

插件编写傻瓜教程>>VC6.0

楼层直达
幻想.

ZxID:1717453

等级: 贵宾
这该死的社会,逼得人在杀人和忍住不杀之间徘徊.

举报 只看楼主 使用道具 楼主   发表于: 2009-01-19 0
— 本帖被 幻想. 执行取消锁定操作(2009-01-19) —

>>写在前面
本教程主要讲解如何用按键精灵自带的模版编写插件.
请大家在教程没全部写完之前不要跟贴,谢谢合作!
需要的工具:VC6.0 编辑语言:C++
>>初步接触
1.安装VC6.0(建议不要使用创天的汉化版)
2.解压插件自带的模版,解压后选择QMPlugin.dsw文件,打开工程.进入VC编辑界面.
3.选择FileViewx选项卡,再选择QMPlugin.cpp.(参照map1图中红圈位置)
此时,编辑区域显示的是QMPlugin.cpp文件的内容.
4.请看下面的组图中的红圈部分
红圈1-4的内容都是QMPlugin.cpp的内容
红圈1: 定义头文件部分
在此打个简单的比喻!我们把插件看做一个机器装配工厂,插件中需要调用的函数看做是装配零件.
插件这个工厂要装配不同的机器必须用到不同的装配零件.为了方便工作,我们人为地把汽车零件放在一个仓库,
把轮船零件放在一个仓库.类推.在这里,定义头文件就相当于在组装一台机器前告诉工厂,
我们组装这台机器需要去哪些仓库拿零件.下面程序中用到的函数必须在头文件指示的仓库里.
这里还要提一下,仓库可以存在包含关系,比如A仓库可以包含B.C2个小仓库,
如果我们要取B仓库中的零件,只要指明A仓库或者B仓库任意一个就可以了.
详细的头文件包含关系可以参阅MSDN(当然自己也可以定义头文件,本文主要是写给一些初学者,在此略过)
红圈2: 编辑按键精灵脚本时显示的本插件的名称注释
修改这里的字符串可以改变本插件显示的名称
红圈3: 定义功能的函数
红圈部分是一个函数,一个函数对应着一条插件命令.
int Test1Handler(char *lpszParamList, char *lpszRetVal)
int表示函数的返回值是一个整型
Test1Handler是本函数的名称
(char *lpszParamList, char *lpszRetVal)是函数的2个参数
char表示这2个参数都是字符型,*是指针运算符,char *说明这2个参数是字符型指针
在C/C++中可以把字符型指针看做是字符型数组,简单的也可以理解成字符串.
lpszParamList是命令需要的参数,lpszRetVal是返回值参数
char lpszParam1[1024] = {0}, lpszParam2[1024] = {0};
ParseParam(lpszParamList,lpszParam1,lpszParam2);
如果该函数对应的插件命令参数大于1个,我们则需要这2句
这2句是把命令需要的参数分解,我们在使用插件的时候写进的命令参数是XXX,XXXX,XXXX的形式的.
XXX,XXXX,XXXX被看做是一个参数传递给插件中的函数.因此我们需要ParseParam函数来分解,
分解的过程是以逗号为分割线,去掉逗号,把一个参数分成几个参数的过程.
上面例子2句是分解成2个参数lpszParam1,lpszParam2.分解后的参数仍是字符串型.
(提一下ParseParam函数是在ExtFunc.cpp中被定义的)
char lpszShowMessage[4096];
sprintf(lpszShowMessage,"Param1 = %s\nParam2 = %s",lpszParam1,lpszParam2);
MessageBox(0,lpszShowMessage,"This is plugin command Test1",0);
这3句是函数过程,这里的sprintf函数就是被定义在"stdio.h"中的
return 1;
C/C++语言的函数除了函数是void型外都必须有返回值,
如果你的函数不需要返回值,也要写return这句,至于返回什么可以任意.
上面定义了函数返回类型是int,这里只要写任意一个整数就可以了.
红圈4: 本插件在编辑按键精灵脚本时的命令,以及注释部分
"Test1","测试1",Test1Handler,
"Test2","测试2",Test2Handler,
知道这是一个结构体就可以了.这个结构体有3个部分,每个部分的逗号都不可以省略.
3个逗号以及这3个逗号之前的字符表示一条插件命令,6.1的则是4个逗号
"Test1"是完成后插件的命令名,与Test1Handler对应
"测试1"是注释内容,Test1Handler是上面定义的函数,与"Test1"对应
如果这里你不想写注释可以这样写"Test1",,Test1Handler,
注:6.0和6.1的模版不同之处,6.1此处多了1个部分,表示该命令有几个命令参数
"Test1","测试1",Test1Handler,2,
现在接触电脑时间越来越少,估计这篇教程要慢慢完成了.预计2.3天才能完成一节.
还有对一些论坛短消息没有回复,敬请大家谅解.
下个章节会讲一些C++函数类型转换的相关知识.
[ 本帖最后由 沉8 于 2007-3-16 12:22 PM 编辑 ]
1.jpg (162.66 KB)
下载次数:82
2007-3-15 22:38
map1


2.jpg (165.33 KB)
下载次数:82
2007-3-15 22:42
map2


3.jpg (153.51 KB)
下载次数:86
2007-3-15 22:42
map3

« 返回列表
发帖 回复