使用windows api函数捕获SAP session的左下角消息句柄
背景 :SAP session的左下角消息非常有用,我们在做SAP的自动化脚本时可以设法读到这个消息的内容,作为程序后续动作的判断条件。如下图: 比如小爬之前给财务的同事制作了一个批量导出SAP各类报表的脚本工具:基于公司IT团队用ABAP编写的这几张表,SAP每次执行完导表动作,数据传输过程,左下角消息为 “Transferring package1 of 1...” ,当表格数据完整导出后,则显示 “已传输N个字节” 。我们的脚本可以去捕获“已传输...”这个消息,来判断报表内容是否已经完整导出,来决定是否要导出下一张报表。 事实上,通过原生的“脚本录制与回放”,我们可以得到这个消息:语法为: sapMessage=session.findById("wnd[0]/sbar").text 。非常简单实用!实际编写脚本过程中遇到的问题是,当我们的脚本动态地顺序往下执行到等待报表出来的过程,控制权交到了导出的excel文件,我们的sapMessage=session.findById("wnd[0]/sbar").text无法获得执行,如果该消息文本恰好作为脚本中循环退出的条件,则脚本程序因为循环无法退出,导致界面卡死。 我想到的解决方法是,前期的参数输入等都通过脚本录制功能生成代码,到了点击“执行(F8)”这个动作,改由window api