原文

1. 获取不到点击 <input type='file'/> 后弹出的window

根本原因是 _IEAction 阻塞,见第4点

解决办法:

;bad code
$oIE = _IE_Example("form")
$oT = _IEGetObjById($oIE, 'fileExample')
_IEAction($oT,"click")
WinWait("Choose File to Upload") ;等待不到弹出
$hChoose = WinGetHandle("Choose File to Upload") ;good code
$oIE = _IE_Example("form")
$oT = _IEGetObjById($oIE, 'fileExample')
MouseMove(_IEPropertyGet($oT, "screenx") + _IEPropertyGet($oT, "width") - 10, _
_IEPropertyGet($oT, "screeny") + _IEPropertyGet($oT, "height")/2)
MouseClick("left")
WinWait("Choose File to Upload")

2. send 需要切换英文输入法

如果没有切换英文输入法,会出现中文输入法候选框

如果能用ControlSend,就不推荐用send,如果非要用send,可以切换输入法为英文再send.

;设置指定窗口为英文输入法
$hWnd = WinGetHandle("[ACTIVE]");$hWnd 为目标窗口句柄,这里设置的是当前活动窗口
$ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", "08040804", "int", 1 + 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", 0x50, "int", 1, "int", $ret[0])
Send('nh')

3. 有时 IE对象 需要重新获取,以便刷新一下值,否则为null

原因未知

4. _IEAction($btnsave,"click") 会阻塞,直到事件完成

所以使用 _IEAction 触发事件时,如果事件里有 alert 之类的弹窗,程序会一直停留在这一句,导致无法继续。所以即便在后面写了 WinWait 等待弹窗的句子,也无济于事。

推荐使用鼠标光标去点击这个按钮,再 WinWait弹窗

5. 日志中的不解之谜

程序运行时日志里,常有下面的 COM Error ,但没有显示异常的行数。结合前后逻辑也没能分析出问题。

另外 scriptline 总是显示 -1 的原因竟然是,编译成exe后,脚本获取不到行数。行数scriptline只会在开发时使用 f5 调试中有效 。(出自链接1连接2

2021-06-30 14:53:03:AutoItCOM Test , We intercepted a COM Error !
2021-06-30 14:53:03:err.description is:
2021-06-30 14:53:03:err.windescription: 发生意外。
2021-06-30 14:53:03:err.number is: 80020009
2021-06-30 14:53:03:err.lastdllerror is: 0
2021-06-30 14:53:03:err.scriptline is: -1
2021-06-30 14:53:03:err.source is:
2021-06-30 14:53:03:err.helpfile is:
2021-06-30 14:53:03:err.helpcontext is: 0
2021-06-30 14:53:03:AutoItCOM Test , We intercepted a COM Error !
2021-06-30 14:53:03:err.description is:
2021-06-30 14:53:03:err.windescription: 发生意外。
2021-06-30 14:53:03:err.number is: 80020009
2021-06-30 14:53:03:err.lastdllerror is: 0
2021-06-30 14:53:03:err.scriptline is: -1
2021-06-30 14:53:03:err.source is:
2021-06-30 14:53:03:err.helpfile is:
2021-06-30 14:53:03:err.helpcontext is: 0

6. ControlListView 闪退

下面的代码作用是寻找ListView控制中的CutePDF Writer的索引,运行时闪退

Local $index = ControlListView($printWnd, '', 'SysListView321', 'FindItem','CutePDF Writer')

原因是操作64位程序,得编译成64位的脚本

确保你你使用的是完整版 SciTE4AutoIt3.exe,否则下面的声明可能不支持

;脚本开头增加声明
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

autoit 脚本开发踩坑点的更多相关文章

  1. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  2. Taro 开发踩坑指南 (小程序,H5, RN)

    Taro 开发踩坑指南 (小程序,H5, RN) css taro 如何展示多行文本省略号 https://www.cnblogs.com/xgqfrms/p/12569057.html UI 设计稿 ...

  3. Spring Boot 开发系列一 开发踩坑

    这是学习spring boot 的第二周,公司号称这玩意是啥都不会的新手就可以填空开发,于是决定上手一把,怎么说我也是搞了快七八年的.NET和.NETcore,没想到无情打脸,快被这个能填空开的IDE ...

  4. 微信小程序开发踩坑日记

    2017.12.29  踩坑记录 引用图片名称不要使用中文,尽量使用中文命名,IDE中图片显示无异样,手机上图片可能出现不显示的情况. 2018.1.5  踩坑记录 微信小程序设置元素满屏,横向直接w ...

  5. 微信小程序开发踩坑记

    前言 微信小程序自去年公测以来,我司也申请了一个帐号开发,春节前后开始开发,现在终于告一个段落了.谨以此文记录下踩过的坑. 坑1:scroll-view与onPullDownRefresh冲突 由于有 ...

  6. ASP.Net Core开发(踩坑)指南

    ASP.NET与ASP.NET Core很类似,但它们之间存在一些细微区别以及ASP.NET Core中新增特性的使用方法,在此之前也写过一篇简单的对比文章ASP.NET MVC应用迁移到ASP.NE ...

  7. uni-app开发踩坑记录

    大部分问题是我在h5端看不到而在android.iOS平台上暴露出来的,不包含小程序 1.:class="['defaultStyle', dynamicStyle]" 不支持直接 ...

  8. Visual Studio For MacOS .NetCore开发踩坑记

    自从Visual Studio For  MacOS公布以来,就开始尝试在Mac上进行net core开发.断断续续遇到了各种奇奇怪怪的问题.虽然大部分利用google查查(百度屁都查不出来),都能找 ...

  9. fibos开发踩坑集合

    fibos.js API资料: 与eosjs相比,fibos.js没有添加新功能,可以在eosjs项目页面https://developers.eos.io/eosio-nodeos/referenc ...

随机推荐

  1. CSS实例:翻转图片、滚动图片栏、打开大门

    CSS 翻转图片主要用到的技术除了3D翻转和定位 ,还用到了一个属性 backface-visibility:visable|hidden;该属性主要是用来设定元素背面是否可见. 效果图如下: 具体的 ...

  2. H5优化:canonical标签该如何正确使用

    对一组内容完全相同或高度相似的网页,通过使用Canonical标签可以告诉搜索引擎哪个页面为规范的网页,能够规范网址并避免搜索结果中出现多个内容相同或相似的页面,帮助解决重复内容的收录问题,避免网站相 ...

  3. token的工作原理及其功能

    一.前言 登录模块是我们在前端项目中一定会有的模块,模块中有一个重要的部分是用户登录验证,对于验证用户是否登录过,我们直接处理办法是检查缓存中是否存在token值,若存在则用户可直接登录,反之,用户需 ...

  4. spring框架Aop学习

  5. EMS导入导出邮箱

    Exchange支持EMS命令导出用户邮箱内容作为备份的功能.当重要用户的邮件误删除后,可以通过导出的邮箱恢复数据. 1.授权管理用户 Exchange默认安装完成后,内置"Mailbox ...

  6. vue单文件组件形成父子(子父)组件之间通信(vue父组件传递数据给子组件,子组件传递数据给父组件)

    看了很多文章,官网文档也有看,对父子组件通信说的不是很明白:决定自己总结一下: vue一般都使用构建工具构建项目:这样每个组件都是单文件组件:而网上很多文章都是script标签方式映入vue,组件通信 ...

  7. 搭建Vue小页面

    学习链接:https://blog.csdn.net/zhenzuo_x/article/details/81013475 环境搭建: 浏览器:Chrome IDE:VS Code或者WebStorm ...

  8. eclipse 执行main方法 错误: 找不到或无法加载主类

    检查环境变量是否正确 JAVA_HOME JAVA的实际安装目录 CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\ ...

  9. Nuxt 的介绍与安装

    Nuxt.js(一.介绍与安装) 1.为什么使用Nuxt 渐进式Vue.js框架给前后端分离带来无限的乐趣,越来越多的程序员选择Vue.在我们使用Vue框架的过程中不免会出现以下的一些问题: 如何更好 ...

  10. 2021.07.26 P1022 计算器的改良(字符串)

    2021.07.26 P1022 计算器的改良(字符串) 改进: 如果是我出题,我一定把未知数设为ab.buh.bluesky之类的长度不只是1的字符串! 题意: 一个一元一次方程,求解. 分析: 1 ...