.版本 2
.支持库 EThread
.程序集 wz_强行兼容高DPI
.程序集变量 _临界区1, 整数型
.程序集变量 _临界区2, 整数型
.程序集变量 _hFont, 整数型
.程序集变量 _hook1, inline_hook
.程序集变量 _hook2, inline_hook
.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
开启高DPI兼容 ()
_临时子程序 () ' 在初始化代码执行完毕后调用测试代码
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 _临时子程序
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 开启高DPI兼容, , , 请在程序入口处第一行调用!必须在窗口显示前调用!
.局部变量 是否已调用, 逻辑型, 静态
.如果真 (是否已调用)
返回 ()
.如果真结束
是否已调用 = 真
设置全局默认字体 ()
SetProcessDPIAware ()
.子程序 SetProcessDPIAware
.局部变量 hdll, 整数型
.局部变量 proc, 整数型
hdll = LoadLibrary (“user32.dll”)
proc = GetProcAddress (hdll, “SetProcessDPIAware”)
.如果真 (proc ≠ 0)
Call (proc)
.如果真结束
FreeLibrary (hdll)
.子程序 Call, 整数型, , by:易语言我吃了
.参数 子程序地址
.参数 参数1, , 可空
.参数 参数2, , 可空
.参数 参数3, , 可空
.参数 参数4, , 可空
.参数 参数5, , 可空
.参数 参数6, , 可空
.参数 参数7, , 可空
.参数 参数8, , 可空
.参数 参数9, , 可空
.参数 参数10, , 可空
.参数 参数11, , 可空
.参数 参数12, , 可空
.参数 参数13, , 可空
.参数 参数14, , 可空
.参数 参数15, , 可空
置入代码 ({ 86, 190, 15, 0, 0, 0, 141, 77, 8, 141, 76, 241, 252, 139, 65, 4, 133, 192, 116, 2, 255, 49, 78, 131, 233, 8, 133, 246, 117, 239, 255, 85, 8, 94, 201, 194, 124, 0 })
返回 (0)
.子程序 设置全局默认字体
_临界区1 = 创建进入许可证 ()
_临界区2 = 创建进入许可证 ()
_hFont = CreateFont (-12, 0, 0, 0, 0, 0, 0, 0, #DEFAULT_CHARSET, 0, 0, 0, 0, “宋体”)
_hook1.安装 (操作_取函数入口 (“gdi32.dll”, “GetStockObject”), 到整数 (&_HookGetStockObject))
_hook2.安装 (操作_取函数入口 (“gdi32.dll”, “DeleteObject”), 到整数 (&_HookDeleteObject))
.子程序 _HookGetStockObject, 整数型
.参数 nIndex, 整数型
.局部变量 nRet, 整数型
进入许可区 (_临界区1)
.如果 (nIndex = #DEFAULT_GUI_FONT)
nRet = _hFont
.否则
_hook1.停止 ()
nRet = GetStockObject (nIndex)
_hook1.启动 ()
.如果结束
退出许可区 (_临界区1)
返回 (nRet)
.子程序 _HookDeleteObject, 整数型
.参数 h, 整数型
.局部变量 nRet, 整数型
进入许可区 (_临界区2)
.如果 (h = _hFont)
nRet = 1
.否则
_hook2.停止 ()
nRet = DeleteObject (h)
_hook2.启动 ()
.如果结束
退出许可区 (_临界区2)
返回 (nRet)