VC++开发酷Q插件随笔【一】打开并编译官方dome

希望我的笔记可以帮助到你!


前言...

酷Q的原理是根据QQ通信协议来登陆(login),进而实现接收(recv)和回复(send)。

他是一个可扩展的QQ客户端框架,可以被理解为自制的QQ客户端。

注意:可扩展性是软件设计的一个较高境界了,如果你也能写出类似酷Q具备扩展功能的程序,那你一定非常厉害了。


下载,编译,运行官方dome

首先你的电脑里需要安装Visual Studio,官方dome是vs2013版,我使用vs2017,可以正常编译,但如果你的版本低于2013就不一定能行,建议升级版本。

官方dome下载:https://github.com/CoolQ/cqsdk-vc     如果你不会下载的话,看下图


之后得到一个压缩包,解压他,打开CQPdemo.sln


打开后提示升级工具集,因为他使用的是vs2010(v100)的生成工具。我们vs里并没没有,点击确定升级一下即可。


之后注意一下项目目录,似乎很多,我们只需要关注“appmain.cpp”,“cqp.h”,“com.example.democ.json”三个即可,其他无需理会,我们根本不用改他们。


我们首先来关注一下appmain.cpp,代码很多,找到第81行的代码

/*
* Type=21 私聊消息
* subType 子类型,11/来自好友 1/来自在线状态 2/来自群 3/来自讨论组
*/
CQEVENT(int32_t, __eventPrivateMsg, 24)(int32_t subType, int32_t msgId, int64_t fromQQ, const char *msg, int32_t font) {

	//如果要回复消息,请调用酷Q方法发送,并且这里 return EVENT_BLOCK - 截断本条消息,不再继续处理  注意:应用优先级设置为"最高"(10000)时,不得使用本返回值
	//如果不回复消息,交由之后的应用/过滤器处理,这里 return EVENT_IGNORE - 忽略本条消息
	return EVENT_IGNORE;
}

这是个特殊的c++写法,他实现原理在这里不做探究,我们只需知道,只要有人发给机器人私聊,他就会调用这个函数。

同理,根据代码注释,我们也知道其他函数的作用了,比如:

/*
* Type=2 群消息
*/
CQEVENT(int32_t, __eventGroupMsg, 36)(int32_t subType, int32_t msgId, int64_t fromGroup, int64_t fromQQ, const char *fromAnonymous, const char *msg, int32_t font) {

	return EVENT_IGNORE; //关于返回值说明, 见“_eventPrivateMsg”函数
}

这个注释已经很明白了,只要有群消息,这个函数就会运行,至于其他函数,看注释即可。


考虑做一个程序:只要机器人收到私聊消息,他就会回复一条“HI”

我们现在已经知道,有私聊消息该怎么接收,那么怎么回复呢?

打开"cqp.h",里面有Q酷提供的所有功能。

注意39行

/*
* 发送私聊消息, 成功返回消息ID
* QQID 目标QQ号
* msg 消息内容
*/
CQAPI(int32_t) CQ_sendPrivateMsg(int32_t AuthCode, int64_t QQID, const char *msg);

注释告诉我们,QQID的值QQ号,msg是消息内容。那么AuthCode填什么呢?

注意"appmian.cpp" ,14行

int ac = -1; //AuthCode 调用酷Q的方法时需要用到

填写ac即可,至于为什么需要,我也没办法了解。


所以,在“appmain.cpp“私聊消息中,填写

CQEVENT(int32_t, __eventPrivateMsg, 24)(int32_t subType, int32_t msgId, int64_t fromQQ, const char *msg, int32_t font) {
	CQ_sendPrivateMsg(ac, fromQQ, "HI"); //这是我们加入的代码,只加入这一行,其他都不要改动
	//如果要回复消息,请调用酷Q方法发送,并且这里 return EVENT_BLOCK - 截断本条消息,不再继续处理  注意:应用优先级设置为"最高"(10000)时,不得使用本返回值
	//如果不回复消息,交由之后的应用/过滤器处理,这里 return EVENT_IGNORE - 忽略本条消息
	return EVENT_IGNORE;
}

即可,其中fromQQ是给机器人发消息的QQ。

这样就可以做到,只要机器人收到私聊消息,他就会回复一条“HI”


好了,这样我们的代码就完成了,在编译之前还要最后的改动

右击箭头,然后点击属性


代码生成->运行库->改成多线程调试。这么做的原因我在之前的博客有写,你可以不关注他的原理,这无关紧要。



预编译头->预编译头->改成不适用预编译头。



之后选择生成,生成->重新生成解决方案。



在项目目录找到两个文件 ”com.example.democ.dll“和”“




把他们放到酷Q的目录,app下。



然后重启酷Q,单击五下版本号,开启开发者模式。



点击重启酷Q即可开启,然后启动酷Q样例应用(VC),因为我们没有修改包名,这是默认的。



确定即可,然后测试我们的应用效果。


猜你喜欢

转载自blog.csdn.net/nullccc/article/details/81038958