# 開發插件之前
## 什么是插件?
綜上所述,插件就是一個使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)