代码拉取完成,页面将自动刷新
#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;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。