# 开发插件之前
## 什么是插件?
综上所述,插件就是一个使MyPCQQ进行扩展的程序,通过插件,就可以使MyPCQQ实现极其丰富的功能。好比一只乐队,MyPCQQ是指挥,插件就是各分部。
## 插件如何工作?
```
MyPCQQ框架 ----是否有消息----有否有插件处理---->插件处理(真) 忽略(假)
插件处理 ---- 是否符合一定的执行条件 ---->执行相关代码(真) 忽略(假)
执行相关代码 ---->调用相关API ----是否丢给下个插件执行---->抛弃(真) 忽略(假)
```
## 编写MyPCQQ的插件,我需要什么?
MyPCQQ系易语言编写,所以对于易语言编译产生的文件的支持能力较好。如果您希望使用易语言编写插件,您需要一个易语言IDE(集成开发环境)。我们推荐您购买正版的易语言以使编译结果有更稳定的运行状态。另外我们也为易语言提供了开发模板,这些东西可以在MyPCQQ本体目录下找到,本文档会以易语言为相关模板进行说明。
> MyPCQQ作为Windows平台上的软件,所以大部分其他编程语言也是可以使用的。但是需要特别注意的是,易语言使用stdcall(C系语言声明方式,其他语言可能略有出入)方式以声明公开函数入口。您需要通过这种方式声明MyPCQQ所需要函数的入口,这样才可以使MyPCQQ正确识别并加载插件。另外一种实现方式就是在MyPCQQ内加载一个DLL,由这个DLL再以各种方式调用其他语言的DLL从而达到兼容的目的。
>[warning] 关于开发文档的内容,还是要说几句:开发文档中存在的非定义性质的东西(比如代码书写方法)可能因人而异。如果是初学者,我们希望您可以拥抱一个良好的代码习惯。这有利于您编写的插件更稳定的在框架上运行,对于个人来讲意义也很大。由于开发文档会涉及事物层次较多较广,因而难免出现错误、不规范的写法或说法等。我们欢迎各位开发者、用户指出,也欢迎各位在社区相关板块一起探讨相关问题,一起共同进步。
- 前言
- 开发
- 在线调试
- 文档 & SDK
- 全局变量
- Event定义
- API列表
- 框架相关
- Api_GetLdw - 计算:Ldw
- Api_GetBkn32 - 计算:长Bkn
- Api_GetGtk_Bkn - 计算:Bkn
- Api_GetRunPath - 框架:获取所在目录
- Api_DeleteQQ - 框架:删除QQ
- Api_GetCookiesByDomain - 框架:根据域名获取Cookies
- Api_GetOnlineQQlist - 框架:获取当前在线可用的QQ列表
- Api_GetQQlist - 框架:获取所有QQ(包括失败的)
- Api_GetPrefix - 框架:获取信息发送前缀
- Api_OutPut - 框架:输出日志
- Api_IsEnable - 框架:获取本插件启用状态
- Api_Login - 框架:登陆QQ(列表存在的)
- Api_Logout - 框架:下线QQ
- Api_Tea加密 - 框架:tean加密算法
- Api_Tea解密 - 框架:tean解密算法
- Api_GetVersion - 框架:获取版本号(发布时间戳)
- Api_GetVersionName - 框架:获取版本名
- Api_GetTimeStamp - 框架:获取当前内部时间戳
- Api_GetLog - 框架:获取所有日志
- Api_AddLogHandler - 框架:添加日志处理函数
- Api_RemoveLogHandler - 框架:移除日志处理函数
- Api_GetRadomOnlineQQ - 框架:随机一个QQ(在线且可以使用的)
- Api_AddQQ - 框架:添加一个QQ(存在则覆盖)
- Api_SetOLStatus - 框架:设置在线状态+附加信息
- Api_GetMC - 框架:获取机器码
- Api_SelfDisable - 框架:请求禁用插件自身
- Api_GetClientType - 框架:获取协议客户端类型
- Api_GetClientVer - 框架:获取协议客户端版本号
- Api_GetPubNo - 框架:获取协议客户端公开版本号
- Api_GetMainVer - 框架:获取协议客户端主版本号
- Api_GetTXSSOVer - 框架:获取协议客户端通信模块(TXSSO)版本号
- Api_SetMsgFilter - 框架:添加一个待发送处理函数
- Api_RemoveMsgFilter - 框架:移除一个待发送处理函数
- 免费版
- Api_GetGroupInfo - 获取群信息(qinfo.clt.qq.com)
- Api_GidGetGN - 群ID转群号
- Api_GNGetGid - 群号转群ID
- Api_GetCookies - 获取Cookies
- Api_GetLongClientkey - 获取长Clientkey
- Api_GetClientkey - 获取Clientkey
- Api_GetSessionkey - 获取会话秘钥
- Api_GetFriendListA - 获取单向好友列表
- Api_GetBirthday - 获取生日
- Api_GetUserInfo - 获取个人信息(原文)
- Api_CancelGroupMsgA - 撤回信息
- Api_GuidGetPicLinkEx - 获取图片链接
- Api_UploadGroupFile - 上传群文件
- Api_Cache_NameCard - 高速缓存群名片
- Api_Ban - 添加黑名单
- Api_DBan - 移出黑名单
- Api_Shutup - 禁言群成员
- Api_IsShutup - 判断是否被禁言
- Api_SetNotice - 发群群公告
- Api_GetNotice - 获取群公告
- Api_GetNameCard - 获取群名片
- Api_SetNameCard - 设置群名片
- Api_QuitDG - 退出讨论组
- Api_DelFriend - 删除好友
- Api_Kick - 踢出群
- Api_JoinGroup - 主动加群
- Api_QuitGroup - 退出群
- Api_Upload - 上传图片(废)
- Api_UploadPic - 上传图片
- Api_GuidGetPicLink - 获取图片连接
- Api_Reply - 被动回复信息(废)
- Api_SendMsg - 发送信息
- Api_Send - 发送封包
- Api_GetNick - 获取用户名
- Api_GetQQLevel - 获取等级信息
- Api_IfBlock - 是否被屏蔽
- Api_GetAdminList - 获取群管列表(包括群主)
- Api_AddTaotao - 发说说
- Api_GetSign - 获取签名
- Api_SetSign - 设置个签
- Api_GetGroupListA - 获取群列表(qun.qzone.qq.com)
- Api_GetGroupListB - 获取群列表(qun.qq.com)
- Api_GetGroupMemberA - 获取群成员(qun.qq.com)
- Api_GetGroupMemberB - 获取群成员(qun.qzone.qq.com)
- Api_GetGroupMemberC - 获取群成员(qinfo.clt.qq.com)
- Api_GetFriendList - 获取好友列表(qun.qq.com)
- Api_GetQQAge - 获取Q龄
- Api_GetAge - 获取年龄
- Api_GetPersonalProfile - 获取个人说明
- Api_GetEmail - 获取邮箱
- Api_GetGender - 获取性别
- Api_GroupInvitation - 邀请对象加入群
- Api_CreateDG - 创建一个讨论组
- Api_KickDG - 踢出讨论组
- Api_DGInvitation - 邀请对象加入讨论组
- Api_GetDGList - 获取讨论组列表(最多100个)
- Api_SendMusic - 发送歌曲(xml)
- Api_SendObjectMsg - 发送信息(xml)
- Api_SendXml - 发送信息(xml)
- Api_IsFriend - 判断是否好友(双向)
- Api_AddFriend - 添加好友
- Api_UploadVoice - 上传语音
- Api_GuidGetVoiceLink - 获取语音链接
- Api_GetGroupName - 获取群名
- Api_Like - 名片点赞
- Api_SendShake - 向好友发送窗口抖动
- Api_SendTyping - 向好友发送‘正在输入’的状态
- Api_PC_Kick - 将对象移除群(PC协议)
- Api_OCR - 图片提取文字
- 商用版
- Api_SetGroupInfo - 修改群设置
- Api_GetQQStageByQQ - 根据账号获取信息
- Api_GetQQStageList - 获取账号列表信息
- Api_HandleGroupRequestAsync - 异步处理被加群类事件
- Api_HandleFriendRequestAsync - 异步处理被加好友事件
- Api_UploadCface_Path - 上传头像(路径)
- Api_UploadCface_Byte - 上传头像(字节集)
- Api_GetLoginQRCode - 获取登录二维码
- Api_SendAppMsg - 发送消息(json)