原文

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. python中dtype,type,astype的区别

    python中dtype,type,astype的区别 type() dtype() astype() 函数名称 用法 type 返回参数的数据类型 dtype 返回数组中元素的数据类型 astype ...

  2. 玩转 React(四)- 创造一个新的 HTML 标签

    在第二篇文章 <新型前端开发方式> 中有说到 React 有很爽的一点就是给我们一种创造 HTML 标签的能力,那么今天这篇文章就详细讲解下 React 是如何提供这种能力的,作为前端开发 ...

  3. 【转】ng-class的用法

    原文出处:https://segmentfault.com/a/11... 在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现 ...

  4. SphinxJS——把字符串编码成png图片的超轻量级开源库

    体验地址:https://jrainlau.github.io/sp...项目地址:https://github.com/jrainlau/s... SphinxJS 一个能够把字符串编码成png图片 ...

  5. 10行 JavaScript 实现文本编辑器

    背景 我们平时用到的浏览器编辑器功能都会比较多,实现的代码逻辑也会非常复杂,往往是作为一个单独插件被引入进来的.但是,现在我只需要一个很基本的内容输入内容编辑的功能,如:粗体.斜体.列表.对齐等.那要 ...

  6. php实验一 html网页设计

    页面展示: 源码demo: 等我传到github

  7. jquery 常用选择器和方法以及遍历(超详细)

    jQuery 常用选择器和和方法 学习总结 一.JQuery 介绍 1. 什么是 jQuery 2. jQuery 版本介绍 3. jQuery 文件介绍 二.jQuery 对象 1. jQuery ...

  8. 微信小程序插件组件-Taro UI

    微信小程序组件使用以下官网查看 ↓  ↓  ↓ https://taro-ui.jd.com/#/docs/fab

  9. java——封装

    java--封装 java--封装1 封装的理解和好处2 封装的事项实现步骤3 将构造器和setXx结合4 this和super区分 1 封装的理解和好处 隐藏实现细节:[方法(连接数据库)<- ...

  10. 在Vue3项目中使用pinia代替Vuex进行数据存储

    pinia是一个vue的状态存储库,你可以使用它来存储.共享一些跨组件或者页面的数据,使用起来和vuex非常类似.pina相对Vuex来说,更好的ts支持和代码自动补全功能.本篇随笔介绍pinia的基 ...