开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

123
返回列表 发新帖
楼主: 易之徒
收起左侧

[已回应] 增加 自绘窗口_Accessible定位 功能

[复制链接]
发表于 2021-4-24 10:43:46 | 显示全部楼层   广西壮族自治区北海市
表达式如何写?
回复 支持 反对

使用道具 举报

结帖率:50% (6/12)
发表于 2021-1-26 20:05:00 | 显示全部楼层   上海市上海市
感谢了! 以后应该会用到
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-6 18:39:09 | 显示全部楼层   广东省东莞市
由于发布太过于匆促,导致有些边界条件没返回好或某些情况没考虑,现在修改后再贴出最新的代码。
  1. .版本 2

  2. .子程序 自绘窗口_Accessible定位, 逻辑型, 公开, 是否成功定位
  3. .参数 原Accessible, 类_Accessible, , 传入即将要定位的Accessible根节点
  4. .参数 表达式, 文本型, , ">"进入下一节点,"#"根据序号进入节点,"?"根据条件进入节点,"&"且,"=="恒等于,"="包含于。n控件名称,s控件状态,t控件类型,id控件ID,v控件值。|例子“#4>#2>?n==ABC&t=EDF>#2”,意思为从根节点开始首先进入第4个节点再进入第2个节点再判断控件名称为ABC且控件类型内容含有EDF的节点再进入第2个节点
  5. .参数 定位后Accessible, 类_Accessible, 参考, 返回定位后Accessible
  6. .局部变量 子表达式, 文本型, , "0"
  7. .局部变量 i, 整数型
  8. .局部变量 command, 文本型
  9. .局部变量 opertor, 文本型
  10. .局部变量 childcount, 整数型
  11. .局部变量 Accessibles, 类_Accessible, , "0"
  12. .局部变量 j, 整数型
  13. .局部变量 found, 逻辑型
  14. .局部变量 Accessible, 类_Accessible

  15. Accessible = 原Accessible
  16. .计次循环首 (文本_分割文本 (表达式, “>”, , 子表达式), i)
  17.     opertor = 取文本左边 (子表达式 [i], 1)
  18.     command = 取文本右边 (子表达式 [i], 取文本长度 (子表达式 [i]) - 1)
  19.     childcount = Accessible.取子元素总数 ()
  20.     .判断开始 (opertor = “#”)
  21.         .如果 (取绝对值 (到整数 (command)) > childcount)
  22.             返回 (假)
  23.         .否则
  24.             .如果 (到整数 (command) > 0)
  25.                 .如果真 (Accessible.取子元素 (到整数 (command), Accessible) = 假)
  26.                     返回 (假)
  27.                 .如果真结束

  28.             .否则
  29.                 .如果 (到整数 (command) < 0)
  30.                     .如果真 (Accessible.取子元素 (childcount + 到整数 (command) + 1, Accessible) = 假)
  31.                         返回 (假)
  32.                     .如果真结束

  33.                 .否则
  34.                     返回 (假)
  35.                 .如果结束

  36.             .如果结束

  37.         .如果结束

  38.     .判断 (opertor = “?”)
  39.         childcount = Accessible.枚举子元素 (Accessibles)
  40.         found = 假
  41.         .计次循环首 (childcount, j)
  42.             .如果真 (内部_解析命令 (command, Accessibles [j]))
  43.                 Accessible = Accessibles [j]
  44.                 found = 真
  45.                 跳出循环 ()
  46.             .如果真结束

  47.         .计次循环尾 ()
  48.         .如果真 (found = 假)
  49.             返回 (假)
  50.         .如果真结束

  51.     .默认

  52.     .判断结束

  53. .计次循环尾 ()
  54. 定位后Accessible = Accessible
  55. 返回 (真)

  56. .子程序 内部_解析命令, 逻辑型
  57. .参数 command, 文本型
  58. .参数 Accessible, 类_Accessible
  59. .局部变量 k, 整数型
  60. .局部变量 equal, 文本型, , "0"
  61. .局部变量 contain, 文本型, , "0"
  62. .局部变量 详细信息, 精易_详细信息
  63. .局部变量 child_commands, 文本型, , "0"

  64. 详细信息 = 自绘窗口_格式化信息 (Accessible)
  65. child_commands = 分割文本 (command, “&”, )
  66. .计次循环首 (取数组成员数 (child_commands), k)
  67.     .判断开始 (寻找文本 (child_commands [k], “==”, , 假) ≠ -1)
  68.         equal = 分割文本 (child_commands [k], “==”, )
  69.         .判断开始 (equal [1] = “n”)
  70.             .如果真 (详细信息.控件名称 ≠ equal [2])
  71.                 返回 (假)
  72.             .如果真结束

  73.         .判断 (equal [1] = “s”)
  74.             .如果真 (详细信息.控件状态 ≠ equal [2])
  75.                 返回 (假)
  76.             .如果真结束

  77.         .判断 (equal [1] = “t”)
  78.             .如果真 (详细信息.控件类型 ≠ equal [2])
  79.                 返回 (假)
  80.             .如果真结束

  81.         .判断 (equal [1] = “id”)
  82.             .如果真 (详细信息.控件ID ≠ equal [2])
  83.                 返回 (假)
  84.             .如果真结束

  85.         .判断 (equal [1] = “v”)
  86.             .如果真 (详细信息.控件值 ≠ equal [2])
  87.                 返回 (假)
  88.             .如果真结束

  89.         .默认
  90.             返回 (假)
  91.         .判断结束

  92.     .判断 (寻找文本 (child_commands [k], “=”, , 假) ≠ -1)
  93.         contain = 分割文本 (child_commands [k], “=”, )
  94.         .判断开始 (contain [1] = “n”)
  95.             .如果真 (寻找文本 (详细信息.控件名称, contain [2], , 假) = -1)
  96.                 返回 (假)
  97.             .如果真结束

  98.         .判断 (contain [1] = “s”)
  99.             .如果真 (寻找文本 (详细信息.控件状态, contain [2], , 假) = -1)
  100.                 返回 (假)
  101.             .如果真结束

  102.         .判断 (contain [1] = “t”)
  103.             .如果真 (寻找文本 (详细信息.控件类型, contain [2], , 假) = -1)
  104.                 返回 (假)
  105.             .如果真结束

  106.         .判断 (contain [1] = “id”)
  107.             .如果真 (寻找文本 (详细信息.控件ID, contain [2], , 假) = -1)
  108.                 返回 (假)
  109.             .如果真结束

  110.         .判断 (contain [1] = “v”)
  111.             .如果真 (寻找文本 (详细信息.控件值, contain [2], , 假) = -1)
  112.                 返回 (假)
  113.             .如果真结束

  114.         .默认

  115.         .判断结束

  116.     .默认
  117.         返回 (假)
  118.     .判断结束

  119. .计次循环尾 ()
  120. 返回 (真)
复制代码

点评

感谢大佬!以前用自绘解析,慢卡的一逼!加了线程都卡,自从用了你这个方法,舒畅太多,谢谢!   上海市上海市  发表于 7 天前
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-6 18:37:55 | 显示全部楼层   天津市天津市
自绘窗口_Accessible定位 功能
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表