67here 发表于 2021-4-27 20:58:33

怎么解决大漠中坐标和win10缩放之间的冲突关系?

不知道大家有没有被win10的缩放头疼过
大漠执行绑定窗口命令后,再使用识图 或者识字时,都需要输入相对坐标。
问题来了,不同的人的显示器不一样,导致win10的缩放默认也不同,极端一点的是现在高分屏的轻薄笔记本
分辨率很高,屏幕尺寸又小,导致默认的缩放会到200%左右,我的这个好些,125%才能看清

问题在于,绑定窗口后,你设定的那个相对坐标,比如说这里,100%时,我截图了登录按钮,但是缩放调到150%之后,
那个相对坐标就落不到登录按钮上了,我先想到的是读取系统dpi缩放数值,然后相应的修复坐标。
问题又来了,我的dm.moveto指令是可以接受修复后的坐标,并且成功点击
但是比如dm.FindStr函数,给了修复后的坐标会直接报错,意思就是这个插件认为 窗口没有这么大,你给的坐标太大了,无法截图 或者识图

唯一能解决的方法就是 取消窗口绑定了,因为不绑定,坐标可以取超出屏幕分辨率的数值
同时 因为缩放,我做的字库也失效了,识字和识图 都不能工作
我裂开了,不想用百度云识字哇



易句话 发表于 2021-4-27 20:58:34

在开始之前设置缩放不就行了
.版本 2

.子程序 设置自定义DPI缩放, 逻辑型, , 自定义win8以上系统缩放与布局
.参数 缩放比例, 整数型, , 比如100
.局部变量 注册表, 注册表操作, , , 调用了精易模块,可以用易语言本身的
.局部变量 临时变量, 整数型
.局部变量 DPI缩放注册表, 文本型

DPI缩放注册表 = “HKEY_CURRENT_USER\Control Panel\Desktop”
.如果 (缩放比例 > 125)
    临时变量 = 2
.否则
    临时变量 = 1
.如果结束
' 注册表.写DWORD值 (DPI缩放注册表, “EnablePerProcessSystemDPI”, 1)' win10修复应用缩放
注册表.写DWORD值 (DPI缩放注册表, “FocusBorderHeight”, 临时变量)
注册表.写DWORD值 (DPI缩放注册表, “FocusBorderWidth”, 临时变量)
注册表.写DWORD值 (DPI缩放注册表, “LogPixels”, 缩放比例 ÷ 100 × 96)
.如果 (注册表.写DWORD值 (DPI缩放注册表, “Win8DpiScaling”, 1))' 1为启用自定义缩放功能,0为取消
    ' 信息框 (“你必须注销系统才能完成设置,是否准备注销Windows系统?”, #是否钮, “提示”, 红警启动器窗口)
    ' 系统_注销 ()
    返回 (真)' 必须注销系统才能完成设置
.否则
    返回 (假)
.如果结束


67here 发表于 2021-4-28 10:42:41

易句话 发表于 2021-4-28 08:52
在开始之前设置缩放不就行了
.版本 2



谢谢你的回答:lol

yyz860723 发表于 2021-5-29 08:28:25

楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
页: [1]
查看完整版本: 怎么解决大漠中坐标和win10缩放之间的冲突关系?