#include "..\include_eapi_header.h"#include<shlwapi.h>#include<shlobj_core.h>#pragma comment(lib,"shlwapi.lib")// 调用格式: SDT_INT 安装字体, 命令说明: "在Windows系统中添加一种字体资源。添加完毕后,该字体即可由任何Windows应用程序调用。成功返回1,失败返回0,如加载内存资源则返回安装临时字体的句柄,字体资源进程之间不可共享,可通过删除字体提前删除资源;"// 参数<1>: 字体文件名或字体资源 _SDT_ALL, 参数说明: "字体资源文件的文件名。可以是.FON,.FNT,.TTF或.FOT文件。或者字体资源"static bool AddFont(const std::string& FontPath){char pszPath[MAX_PATH] = { 0 };bool result = false;if (SHGetSpecialFolderPathA(0, pszPath, 20, 0)){if (PathFileExistsA(FontPath.c_str())){size_t iPos = FontPath.find_last_of('\\');std::string filename = FontPath.substr(iPos, FontPath.length() - iPos);filename = pszPath + filename;if (CopyFileA(FontPath.c_str(), filename.c_str(), TRUE)){BOOL Ret = AddFontResourceA(FontPath.c_str());result = (bool)Ret;if (Ret) {SendMessageA(HWND_BROADCAST, 0x1Du, 0, 0);}}}}return result;}static HANDLE AddFont(LPBYTE FontPath){DWORD dwFonts = 0;return AddFontMemResourceEx(FontPath + sizeof(size_t) * 2, *reinterpret_cast<size_t*>(FontPath + sizeof(size_t)), 0, &dwFonts);}EAPI_EXTERN_C void eapi_AddFont_29_eapi(PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf){if (pArgInf->m_dtDataType == SDT_TEXT && pArgInf->m_pText) {pRetData->m_int = AddFont(pArgInf->m_pText);}else if (pArgInf->m_dtDataType == SDT_BIN){pRetData->m_int = reinterpret_cast<intptr_t> (AddFont(pArgInf->m_pBin));}else{pRetData->m_int = 0;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。